从 C10K 到 C500K

还在谈 C10K 的问题?这个已经过时了,现在大家已经开始说 C500K

国外的 Urban Airship 公司的工程师在其官方网志上发文章介绍他们在产品环境中做到 50 万并发客户端,Java + Pure NIO 的实现,最近又有文章介绍针对 Linux Kernel 调优的经验:Linux Kernel Tuning for C500k 。并且指出了”单个 IP 最大并发数量上限为64K” 只是一个误解。

硬件环境?操作系统为 Ubuntu(Lucid),租用 Amazon 的 EC2 ,使用 EC2 Large instances,64 位操作系统,每个 7.5 GB 内存。

当然,Urban Airship 是做手机消息 Push 服务的(Android Push 架构),所以,如果你也要做到这样的并发,还要看你的应用场景是否合适。去年了解到曾在新浪、腾讯任职的杨建已经做到超过 20 万的 HTTP 并发(现在可能已经突破这个限制了),非常的惊人。我非常想知道现在各个公司在这方面的实践数据。

EOF

另外参考:A Million-user Comet Application with Mochiweb

更新:杨建同学发来消息,去年已经单击突破 46.5万 Connections, 两块网卡, 1.5G 输出。10万请求处理每秒,每个响应 2k 左右。据说当时遇到一个坎一直没能过 50 万,不过这个坎三个月前已经过了,现在过 60 应该没悬念,四核双 CPU 机器。据杨建说,”按现在 4 Core * 4CPU 的机器,我觉得可以冲刺 80~100万,前提需要4块网卡(千兆)”。可见,把事情做到极致是没有极限的。

此文作者:, 位于 Arch 分类 标签: on .
转载须以超链接形式标明文章原始出处和作者信息及版权声明.

16 thoughts on “从 C10K 到 C500K

  1. sk

    我认为要和应用关联起来。
    简单的应用应该可以达到这个水平,但是动态的、复杂的、事务性的web应用,这个应该是不能达到这个水平的。
    不过在简单应用环境,多网卡桥接,应该光从连接数上来计算应该可以。

    Reply
  2. cysin

    并发数的问题,一个是数据IO问题,一个是数据共享、通讯问题。用erlang试试吧,在合理的硬件上达到很高的并发不是很困难的,毕竟都是现成的东西在那

    Reply
  3. fisherman

    这个实现起来很容易了,去年某项目上线,8G内存扛并发连接55万;4G能扛30万。

    Reply
  4. fisherman

    “单个 IP 最大并发数量上限为64K” 只是针对client来讲的,local port有限,如果要增加client的并发量,只有增加ip了,每个ip 64K。

    Reply
  5. afei

    在epoll模式下,socket并发连接数多少除了与物理内存大小有比较直接关系以外,另一个制约因素是单片网卡的中断分布集中在多核cpu的其中一个,这个cpu往往在大量并发连接数据交换时成为一个瓶颈,不过最近的2.6.35 版Linux内核貌似解决了这个问题,http://www.javaeye.com/news/17197

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *