这里有人实现过大规模的 APNS 系统么?

2011-12-19 17:11:10 +08:00
 Livid
目前在一台 1G 内存的日本 Linode 上,使用 Python 基本上可以做到每秒发送 10 条。但是这样的话,一整天也顶多可以发送 80 多万而已。

后端使用了 celery,因此目前貌似主要瓶颈是在内存。

这里有人实现过大规模的 APNS 系统么,在你们实现的系统上,每秒并发的发送可以做到多少呢,用的是什么样的语言和硬件呢?
10347 次点击
所在节点    iDev
23 条回复
Sai
2011-12-19 22:04:52 +08:00
我们新的 Push 系统,单线程每秒至少 100 条,一般可以开到五线程。
Livid
2011-12-19 22:29:59 +08:00
@Sai 所以,你做的新 push 系统可以在 VPS 上每秒完成 500 条,每分钟 30000 条?
peterlu
2011-12-19 22:44:22 +08:00
我们现在用parse.com 轮子没有必要自己重复造。
soulhacker
2011-12-19 22:53:47 +08:00
最近正在研究 parse.com 呢,似乎算是移动 PaaS 里比较完整的一个东西,不知道 beta 结束会怎么收费……
gonefish
2011-12-19 22:58:38 +08:00
貌似我们公司现在是单台机器每秒600条
Livid
2011-12-19 23:04:14 +08:00
@gonefish @Sai 嗯,似乎找到原因了。

应该是在一次连接中发送多条,而不是每连接一次发送一条。

改一下试试。
Sai
2011-12-19 23:16:05 +08:00
@Livid 对,一次连接打开以后可以发上几百条以后再开下一个。

做一个 long polling,开了以后一直往里面写请求似乎也是可行的。
freefcw
2011-12-19 23:25:06 +08:00
@soulhacker 不是已经有Pricing了么
tiantian20007
2011-12-20 00:42:08 +08:00
https://github.com/samuraisam/pyapns 的飘过。是看到instagram用的这个,应该比较靠谱。到还没有压力测过。
feilaoda
2011-12-20 10:05:40 +08:00
pyapns代码量很小。貌似不错。 @tiantian20007 你现在最大压力到多少?
everbird
2011-12-20 10:34:46 +08:00
@livid每连接一次发一条会被当作DDOS攻击的吧...
"You should also retain connections with APNs across multiple notifications. APNs may consider connections that are rapidly and repeatedly established and torn down as a denial-of-service attack. Upon error, APNs closes the connection on which the error occurred."
bl0ck
2011-12-20 11:16:09 +08:00
CMGS
2011-12-20 11:24:04 +08:00
每次发一条连接一次会被判DDOS,豆瓣的做法是做了个APNS的服务,基于Gevent和APNSWrapper,每个应用保持一个长连接到APPLE服务器,挂了自动重连,然后应用走一个接口push message到这个server,这个server负责push到apple server。
soulhacker
2011-12-20 11:44:09 +08:00
@freefcw 嗯,那个 pricing 还是比较 OK 的,如果以后不变的话……

@bl0ck 这个 Urban Airship 还没试过,回头试试……
imom0
2011-12-20 16:50:06 +08:00
就说10条/s慢得太离谱了。
@CMGS 应该和这个差不多吧,除了长连接。 https://github.com/gwik/applepushnotification
CMGS
2011-12-20 19:11:58 +08:00
@imom0 恩,差不多。。不长连接APPLE会干了你= =
maven
2011-12-26 14:55:42 +08:00
我的Linode VPS 发APNs遇到的问题是socket会自己停止服务
Livid
2011-12-26 18:00:58 +08:00
今天在服务器上用 APNSWrapper + Celery 获得的最高发送性能 933/s。
orzzzzz
2011-12-26 20:52:36 +08:00
嗯,最近刚看了一下ApnsPHP,是不是说应connect之后可以一直send,不disconnect?
andy
2011-12-27 09:52:23 +08:00
谁知道Android有什么好的方案吗?

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

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

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

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

© 2021 V2EX