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
V2EX  ›  iDev

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

  •  
  •   Livid · 2011-12-19 17:11:10 +08:00 · 10347 次点击
    这是一个创建于 4756 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前在一台 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
       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
       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
       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   ·   实用小工具   ·   1603 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 16:52 · PVG 00:52 · LAX 08:52 · JFK 11:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.