InfoQ

新闻

Ruby的Net::HTTP怎么了?

作者 Mirko Stocker译者 张龙 发布于 2008年11月17日 上午9时46分

社区
Ruby
主题
性能和可伸缩性
标签
Ruby 1.9

有人可能会问:“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?

没有回复

回复

深度内容

Flex与JSON及XML的互操作

平台需要互操作性。在这篇文章中,作者仔细研究了Flex和JSON及XML的互操作性。文章也包含了使用E4X库来将XML映射到图表和表格组件的内容,还演示了如何使用as3core库来解码JSON消息。

用Qi4j进行面向组合编程

本文将简要介绍面向组合编程(COP,Composite Oriented Programming)的概念,展示它如何规避OOP存在的一些问题,并重新点燃使用可重用部件组装领域模型(Domain Model)的希望。

系统开发——新学科,新教育

一门新的计算机学科——“系统开发”,强调人性化、匠艺、设计、创意、创新和新事物的涌现,并建议用被称为“bottega”的工作室替代乏善可陈的教室。

图书聚焦:Visual Studio 2008 揭秘

Mike Snell和Lars Powers用他们最近由Sams出版的新书《Visual Studio 2008揭秘》,试图帮助大家提高开发人员的生产力。本文包括一个下载样章——第10章调试。

BPEL为何不是BPM的圣杯?

Pierre Vigneras在本文中讨论了作为标准之一的BPEL所存在的问题。Pierre先给我们大致介绍了一个简单的并行流程,接着讨论了从业者在试图以一个结构化模型为基础表达非结构化流程时遇到的一系列问题。

基于范型的多语言编程

你是否仔细思考过,为什么人们总在讨论“要正确的语言做恰当的事情”?在这篇文章中,Sadek Drobi向你解释了为什么应该在系统内部混合使用多种语言。

采访与书摘《Pro Web 2.0 Application Development with GWT》

Jeff Dwyer就关于他的新书(《Pro Web 2.0 Application Development with GWT》)、GWT1.5以及创建可搜索的Ajax应用谈了一些他的见解。

时刻准备着,迎接IT业的春天

我们需要设身处地地为客户及客户的业务本身着想,与客户同舟共济。更多创新的思路、产品和模式也同样将为IT业带来新的出路。IT业并不需要坐以待毙,在春天到来之后,市场将会更加繁荣!