这里有人实现过大规模的 APNS 系统么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
Livid
59.92D
455.25D
V2EX    iDev

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

  •  
  •   Livid
    PRO
    2011-12-19 17:11:10 +08:00 10839 次点击
    这是一个创建于 5052 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前在一台 1G 内存的日本 Linode 上,使用 Python 基本上可以做到每秒发送 10 条。但是这样的话,一整天也顶多可以发送 80 多万而已。

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

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

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

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

    做一个 long polling,开了以后一直往里面写请求似乎也是可行的。
    freefcw
        8
    freefcw  
       2011-12-19 23:25:06 +08:00
    @soulhacker 不是已经有Pricing了么
    tiantian20007
        9
    tiantian20007  
       2011-12-20 00:42:08 +08:00
    https://github.com/samuraisam/pyapns 的飘过。是看到instagram用的这个,应该比较靠谱。到还没有压力测过。
    feilaoda
        10
    feilaoda  
       2011-12-20 10:05:40 +08:00
    pyapns代码量很小。貌似不错。 @tiantian20007 你现在最大压力到多少?
    everbird
        11
    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
        12
    bl0ck  
       2011-12-20 11:16:09 +08:00
    CMGS
        13
    CMGS  
       2011-12-20 11:24:04 +08:00
    每次发一条连接一次会被判DDOS,豆瓣的做法是做了个APNS的服务,基于Gevent和APNSWrapper,每个应用保持一个长连接到APPLE服务器,挂了自动重连,然后应用走一个接口push message到这个server,这个server负责push到apple server。
    soulhacker
        14
    soulhacker  
       2011-12-20 11:44:09 +08:00
    @freefcw 嗯,那个 pricing 还是比较 OK 的,如果以后不变的话……

    @bl0ck 这个 Urban Airship 还没试过,回头试试……
    imom0
        15
    imom0  
       2011-12-20 16:50:06 +08:00
    就说10条/s慢得太离谱了。
    @CMGS 应该和这个差不多吧,除了长连接。 https://github.com/gwik/applepushnotification
    CMGS
        16
    CMGS  
       2011-12-20 19:11:58 +08:00
    @imom0 恩,差不多。。不长连接APPLE会干了你= =
    maven
        17
    maven  
       2011-12-26 14:55:42 +08:00
    我的Linode VPS 发APNs遇到的问题是socket会自己停止服务
    Livid
        18
    Livid  
    MOD
    OP
    PRO
       2011-12-26 18:00:58 +08:00   1
    今天在服务器上用 APNSWrapper + Celery 获得的最高发送性能 933/s。
    orzzzzz
        19
    orzzzzz  
       2011-12-26 20:52:36 +08:00
    嗯,最近刚看了一下ApnsPHP,是不是说应connect之后可以一直send,不disconnect?
    andy
        20
    andy  
       2011-12-27 09:52:23 +08:00
    谁知道Android有什么好的方案吗?
    etxiaohei
        21
    etxiaohei  
       2013-03-21 12:46:53 +08:00
    @Livid 也是需要用长连接发送吧,一次一条还是慢,就算用celery搭建分布式
    zkdfbb
        22
    zkdfbb  
       2013-05-16 18:44:33 +08:00
    APNSWrapper + Celery 怎么做的?
    为什么我单用APNSWrapper发送非常慢,几乎是一条一秒,在实验环境下
    已经改成长连接了
    happyface
        23
    happyface  
       2015-12-09 17:50:34 +08:00
    今天本来想优化自己的推送服务的,测试测试着,意识到自己跳进了一个坑,就过来搜搜看,果然大家都跳过。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2512 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 04:43 PVG 12:43 LAX 21:43 JFK 00:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86