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

2014-03-26 22:53:52 +08:00
 BeanYoung
现在应用大概有150w用户,日活10w+,两台服务器,一台api,一台数据库。最近几次全员推送,每次都api超时,处于无法全员推送的状态。

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

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

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

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

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

或者,没必要集中推送嘛,如果实时性要求不高的话。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/106031

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX