V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
BeanYoung
V2EX  ›  Python

大家怎么解决推送后大量用户涌入的问题

  •  
  •   BeanYoung · 2014-03-26 22:53:52 +08:00 · 4172 次点击
    这是一个创建于 3878 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在应用大概有150w用户,日活10w+,两台服务器,一台api,一台数据库。最近几次全员推送,每次都api超时,处于无法全员推送的状态。

    我们使用到的技术关键字包括python, thirft, MySQL, peewee, redis, flask

    我先说说我的想法。分库分表,缓存,无提示声音推送。

    大家都怎么处理这种app全用户推送问题的?有啥思路和建议?
    12 条回复    1970-01-01 08:00:00 +08:00
    mailunion
        1
    mailunion  
       2014-03-26 23:28:54 +08:00
    分时段
    ovear
        2
    ovear  
       2014-03-26 23:39:04 +08:00
    queue
    BeanYoung
        3
    BeanYoung  
    OP
       2014-03-26 23:41:01 +08:00
    @ovear 这个队列怎么用?
    BeanYoung
        4
    BeanYoung  
    OP
       2014-03-26 23:41:29 +08:00
    @mailunion 分时段是个不错的方法。但对时效性较高的推送不太合适
    9hills
        5
    9hills  
       2014-03-26 23:45:40 +08:00 via iPad
    按照最大流量重新计算资源,该买机器的买机器
    huijiewei
        6
    huijiewei  
       2014-03-27 00:08:02 +08:00
    分时间推送啊。

    固定时间点开始推送最大可负载的用户量,比如10W。监控这10W用户的访问,然后再根据监控1W,1W的再进行分段推送即可
    ericFork
        7
    ericFork  
       2014-03-27 00:18:35 +08:00
    如果使用的是弹性云主机,可以根据历史监控数据推断即将到来的峰值,在给出一定冗余的基础上暂时升级配置,然后根据实时监控数据降低配置
    yinxingren
        8
    yinxingren  
       2014-03-27 00:21:02 +08:00
    最经济的办法就是分时段推送了吧
    Ricepig
        9
    Ricepig  
       2014-03-27 00:43:15 +08:00
    redis模拟一个Queue,推动时把消息enqueue,另外起一个service,有节奏地dequeue并通知.

    短信群发都这么做,哈哈
    huafang
        10
    huafang  
       2014-03-27 00:50:39 +08:00
    腾讯已经推出一个推送服务了
    openroc
        11
    openroc  
       2014-03-27 10:55:46 +08:00   ❤️ 1
    如果必须要并发访问,就利用EC2这样的,提前launch多个instance。数据也可以用instance作cache。峰值过去后,在关闭,也很节省。(24个instanche,1小时,相当于,1个instance一天)
    GreenHand
        12
    GreenHand  
       2014-03-27 16:29:30 +08:00
    如果只是推送后服务器无法承载访问压力,建议部署在云主机上。
    如果买主机,可能导致平时资源浪费。

    或者,没必要集中推送嘛,如果实时性要求不高的话。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1398 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:47 · PVG 07:47 · LAX 15:47 · JFK 18:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.