2012年11月6日,美国现任总统奥巴马在竞选总部所在地芝加哥举行的竞选之夜集会上登台发表胜利演说。美国各大电视网6日深夜公布的初步统计结果显示,现任总统、民主党候选人奥巴马在大选中击败共和党挑战者罗姆尼,成功连任。

这张地图显示了美国各个州与大选有关的Twitter消息数量
在这次大选中,奥巴马通过Twitter为自己拉票,选举日当天,高峰时期Twitter服务器每分钟处理的数目为327452条,峰值记录是874,560,大约每秒15,107条Twitter。而在过去,Twitter信息流最多的时候也只有8000多次,比如碧昂丝怀孕一秒最多有8868条Tweets,跨年钟声响起时一秒产生了6939条。而且这些峰值记录都是在几秒或几分钟内出现的,但美国大选却持续了好几个小时。

在互联网世界里,真正成功的不是奥巴马,而是Twitter。因为Twitter这次没有宕机。
Twitter基础设施副总裁Mazen Rawashdeh表示,当天人们在Twitter上发布了3100万条跟选举相关的Tweets,而Twitter访问量阶段性飙升,一度达到每秒15107条。这是在过去6年的发展过程中,与选举有关的规模最大的Twitter会话,但这并不是周二用户发布Twitter消息的全部。
那么,Twitter是如何承受住前所未有的高并发访问量呢?
Rawashdeh在博客上称,Twitter之所以能够承受住前所未有的连续高并发访问量,这是因为在过去的一年里,Twitter在运营团队上做了一些整改,包括逐渐脱离使用Ruby Web脚本语言以及运行引擎,重新编写(将Ruby、Java和Scala代码结合在一起)能够运行在Java虚拟机的服务器端的代码,同时改进了Ruby的性能。
自2009以来,Twitter在很大程度上运行Ruby,将其称之为Ruby企业版(Ruby Enterprise Edition),但是Ruby解释器给Twitter服务器带来了过多的负荷负重,特别是它的“垃圾回收”机制——从已结束的进程中释放出内存。Twitter开发者曾尝试过优化Ruby垃圾回收以便在运行时释放出更多的性能,此外还开发了自己的垃圾回收器,并将其命名为“Kiji”。但是,结果都不是很理想。目前,Twitter试图从Ruby转向Java。
“作为迁移Ruby的一部分,我们重新配置了服务器,移动客户端的访问将通过Java虚拟机堆栈,从而避免与Ruby堆栈同时进行”,Rawashdeh如是说,“能承受这样的负载得益于Twitter利用Java改写了Ruby on RailsTwitter。起初公司内部是反对Java,支持Scala,而今,Twitter将Scala和Java结合了。目前,Twitter还有一部分在运行Ruby,比如,部署一个自定义代码,当执行长时间运行进程时利用Ruby运行设计高度优化版来进行更有效的内存管理。”
Twitter正在努力实现这一愿景——无论何时、何地,人们都可以7*24使用Twitter。
英文出自:Arstechnica