BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Ruby的Net::HTTP怎么了?

| 作者 Mirko Stocker 关注 0 他的粉丝 ,译者 张龙 关注 14 他的粉丝 发布于 2008年11月18日. 估计阅读时间: 1 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

有人可能会问:“Ruby对Net:HTTP的实现出什么问题了”?Adam Nelson对应用传输大量数据时的表现感到很吃惊。“当数据以1024字节块的大小被传输时,我看到了CPU的红线”,这是Adam在其初次分析时所发现的。实际的问题是“Ruby针对每个单独的rbuf_fill调用都设置一个超时”,Alex Young说到,“那么在默认情况下,每接收到1K数据,就必须产生一个新的线程”。

针对Ruby不同的实现和不同的库所进行的一个比较表明Ruby 1.8.6对CPU的占有率竟然达到了1.8.7版的两倍,显然后者使用了更大的缓存(16K)。有趣的是,Ruby 1.9.0对CPU的占有率最低,其实现采用了readpartial:“不对socket读取设置超时”,同时“提前为每次读取分配字符串缓存”。紧追其后的是RFuzz,这是一个纯粹的Ruby实现,基于Zed Shaw所编写的Mongrel内核。

该问题早就有人提出来了,2006年的一个关于ruby-talk的邮件列表中就有人在讨论该问题,同时提出了该问题的解决方案。此外,这也证明开源对于我们的帮助和价值是多么大啊。  

查看英文原文:What Is Wrong With Ruby's Net::HTTP?

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT