有人可能会问:“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 的邮件列表中就有人在讨论该问题,同时提出了该问题的解决方案。此外,这也证明开源对于我们的帮助和价值是多么大啊。
更多内容推荐
10、Netty 的编码和解码
2023-09-27
浅谈 WEBrick 的多线程模型
这篇文章会介绍在开发环境中最常用的应用容器 WEBrick 的实现原理
史上最全 Java 面试 266 题:算法 + 缓存 +TCP+JVM
-XX:PermSize=256m -XX:MaxPermSize=512m -
2021-11-11
4. Redis 通用指令
2023-02-15
采用位图标记技术的垃圾收集器将会大幅改善内存占用
Ruby 1.9.3的后继者将会使用位图标记垃圾收集器替换掉当前的惰性垃圾收集器,从而大幅降低并行程序的内存需要。这最新的垃圾收集器和Ruby企业版写时拷贝的垃圾收集器类似,我们采访了实现了这两种垃圾收集器的中村成洋以获得更多相信情况。
HTTP/3 与 HTTP/2 的性能对比
HTTP/3与HTTP/2,谁的性能更好?Cloudflare进行了对比测试。
5. Spark 序列化与反序列化
2023-09-08
范凯观点:Ruby 社区应该去 Rails 化
InfoQ中文站报道过一些公司从Ruby转移到其他语言的新闻,包括"Iron.io从Ruby迁移到Go:减少了28台服务器并避免了连锁故障"、"从Ruby向Java的迁移帮助Twitter挺过了美国大选"和"在LinkedIn的Ruby on Rails和Node.js对决"。最近,IT元老范凯在博客中详细地分析了Rails目前在Web服务方面的局限和原因,针对“继续沿用Ruby on rails重写或者重构应用,性能可能会有一两倍的提升,但无法弥合10倍以上的性能差距,难道说Ruby真的如此不堪吗?注定要被Node.js或者Go所取代吗?”这个问题给出了自己的观点,即:使用其他Ruby轻量级框架取代Rails,而不是使用Node.js和Go取代Ruby。
移动后端支持平台 Parse 将 API 由 Ruby 迁移到 Go
2011年,Parse借助Ruby on Rails快速推出了第一个版本。但随着代码库的增长,部署时间越来越长,“一个请求一个进程”的Rails模型开始无法满足平台的扩展需求。于是,在评估了EventMachine、JRuby、C++、C#、Go等可选方案后,他们选择了Go。
Ruby Web 服务器的并发模型与性能
这是整个 Rack 系列文章的最后一篇了
5. 连接池:基本原理、开源实例 silenceper/pool
2023-09-27
14. 并发编程:利用 channel 实现一个基于内存的消息队列
2023-09-27
Ruby 2.1 迁到分代式垃圾收集,以应对其在大规模部署方面所遭受的批评
Ruby的创建者宣布,Ruby 2.1将迁至分代式垃圾收集,此举有望成为这门语言的一项重要性能提升。这一通告在Barcelona Ruby会议期间发布,此次会议将Ruby GC单独挑出来作为其在大规模部署方面的主要痛点。
Ruby 之父:不要违背开发人员的本能
在 Ruby 3.0 发布后,松本行弘接受了一次专访。在专访中,他介绍了 Ruby 的最新特性以及他改进 Ruby 的方法,并分享了他对 Ruby 未来的见解。
为什么我不会在新公司中使用 Rails
从流量来说,在线文档上传及分享社区Scribd是世界第三大Rails站点。Jared Friedman是该公司的联合创始人兼首席执行官。他从2006年就开始使用Rails,Scribd第一个版本是用Rails 0.7编写的。现如今,Rails已经成为美国硅谷创业公司默认的Web应用程序开发框架。但Friedman认为这是个错误,并在近日撰文阐述了这一观点。
NGINX 局限太多,Cloudflare 最终放弃它并用 Rust 自研了全新替代品
团队里关于自建代理的呼声不断涌现,大家越来越觉得这种方式虽然投资较大,但最终回报是值得的。
GOTO Berlin: 使用自己的公共 API 的问题
Soundcloud的工程总监Phil Calcado 在最近的GOTO Berlin大会上分享自己管理和构建大型Rails应用程序的经验时提到:使用自己的公共API可能是一种挑战。
Iron.io 从 Ruby 迁移到 Go:减少了 28 台服务器并避免了连锁故障
Iron.io用Go重写了IronWorker,服务器数量从30台减少到2台,CPU利用率也下降至5%以下。本文介绍了Go所解决的问题并探讨了该语言的优缺点。
代码模板(Python、C、Java、JavaScript、Go)
2023-09-25
在 LinkedIn 的 Ruby on Rails 和 Node.js 对决
鉴于性能和可扩展性方面的原因,LinkedIn前段时间将其移动设施的后台从Ruby on Rails替换成了Node.js。LinkedIn团队的一位前成员根据其自身的认识,对此做出了回应并解释了问题的原委。
暂无签名
推荐阅读
电子书
大厂实战PPT下载
换一换 蔡适择 | 顺丰科技 大数据总监
Luca Mezzalira | Amazon Web Service Principal Serverless Specialist Architect
俞天翔 | 快手 增长研发大型活动/激励前端负责人
评论