在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

Ruby 的 Net::HTTP 怎么了?

  • 2008-11-17
  • 本文字数:457 字

    阅读完需:约 1 分钟

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

2008-11-17 09:461081
用户头像

发布了 88 篇内容, 共 274.1 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

ZooKeeper数据模型

穿过生命散发芬芳

zookeeper 10月月更

挑战 30 天学完 Python:Day6 数据类型 - 元组tuple

MegaQi

Python 挑战30天学完Python 10月月更

高效能敏捷交付团队反思:特性团队(FeatureTeam)+Scrum

laofo

DevOps 敏捷 研发效能 持续交付 敏捷研发

Go 语言入门很简单:Go 语言的错误处理

宇宙之一粟

异常处理 错误处理 Go 语言 10月月更

改变线程状态的方法

急需上岸的小谢

10月月更

CorelDRAW 2019 软件应用项目(五)

张立梵

设计师 CorelDRAW 2022 10月月更

华为云从入门到实战 | 云速建站服务与企业主机安全服务

TiAmo

华为 华为云 云开发 10月月更

React组件之间的通信方式总结(上)

beifeng1996

React

Linux中的目录结构是什么样的?有人说像“树”,你觉得呢

wljslmz

Linux 10月月更 目录结构

Java注解

急需上岸的小谢

10月月更

React面试八股文(第二期)

beifeng1996

React

画一个冰糖葫芦祝大家甜甜蜜蜜

急需上岸的小谢

10月月更

数据湖(四):Hudi与Spark整合

Lansonli

Hudi 10月月更

js异步编程面试题你能答上来几道

loveX001

JavaScript

React源码分析2-深入理解fiber

goClient1992

React

C++中变化布局实现思路

中国好公民st

c++ 布局 10月月更

抢滩东南亚,融云IM助力应用抓住经济转型红利

融云 RongCloud

互联网 数字化 IM

2022年ArchSummit全球架构师峰会杭州站感想

谙忆

ArchSummit 飞链云 架构师峰会

promise执行顺序面试题令我头秃,你能作对几道

loveX001

JavaScript

前端关于面试你可能需要收集的面试题

loveX001

JavaScript

CorelDRAW 2019 软件应用项目(六)

张立梵

设计师 CorelDRAW 2022 10月月更

React源码分析1-jsx转换及React.createElement

goClient1992

React

leetcode 380. Insert Delete GetRandom O(1) O(1) 时间插入、删除和获取随机元素 (中等)

okokabcd

LeetCode 数据结构与算法

Java多线程 线程池的生命周期及运行状态

Yeats_Liao

后端 Java core 10月月更

【一Go到底】第十九天---init函数、匿名函数

指剑

Go golang 10月月更

翟佳:StreamNative 组织构建之路丨声网开发者创业讲堂 • 第 5 期

RTE开发者社区

技术管理 人工智能’

日志管理与分析系统的基本功能

阿泽🧸

日志管理 10月月更

Java多线程 关闭线程池 shutdown() 、shutdownNow()、awaitTermination()

Yeats_Liao

后端 Java core 10月月更

让Jenkins执行GitHub上的pipeline脚本

程序员欣宸

GitHub jenkins 10月月更

React组件之间的通信方式总结(下)

beifeng1996

React

Ruby的Net::HTTP怎么了?_Ruby_Mirko Stocker_InfoQ精选文章