分享 [译] 为什么我们开发的 Raptor 比 Unicorn 快 4 倍,比 Puma,Torquebox 快 2 倍

ohcoder · 2014年11月13日 · 最后由 psvr 回复于 2016年06月02日 · 9709 次阅读
本帖已被管理员设置为精华贴

昨天看到斑竹分享了一篇介绍 Raptor 的文章。https://ruby-china.org/topics/22600 我自己是一名 Rails 初学者,看完之后学到了很多基础姿势,觉得可能会对一些有兴趣的朋友有所帮助,所以就花了一天的时间翻译成了中文。

英文水平有限,如果有朋友发现翻译不妥之处,望能指出,以免误导他人,先谢过。

文章太长了,就不往这里贴了。

译文链接:http://ohcoder.com/blog/2014/11/11/raptor-part-1/

👍 直接点赞

翻译很难。

#1 楼 @nightire 很好~更符合中文逻辑~

#1 楼 @nightire 多谢指出翻译的错误,已改正。翻译不太容易,指出错误更是不容易。:)

#7 楼 @OhCoder https://ruby-china.org/topics/22055 我们公司正在招人,有兴趣吗?

看来是北邮的师兄啊

:plus1: 赞,翻译是个停费时的事,真不容易。

翻译得更优雅了,@nightire,看来经验比较丰富了。

不错,当时看完 node.js HTTP Parser 这章就没继续往下看了,挺费时的

翻译好赞!! 猜测性能的提升 node.js http parser 要占比较大的因素,unicorn 应该也可以用这个 parser。 另外,在实际项目中 app server 耗时在整个应用里面占很少的比重,提升效果有限。

重复参与 (reentrant)

reentrant 一般翻译成可重入。

在 Unix 系统中,这些是通过 readv() 和 write() 系统调用来实现的。在 Raptor 中会广泛使用 writev()。

前面也应该是 writev() 吧

@skydiver 你的翻译更贴切。另,你指出的错误也已经改过,thanks。:)

20 楼 已删除

#16 楼 @quakewang node.js 的 parser 其实比 unicorn 的慢...

看了下,原来是个商业 app server,部分核心能力要收费;不过用这篇文章来学习下各种 app server 工作原理、优缺点也不错

赞!刚想自己翻译成中文一下,发现已经有译文了。赞同 @quakewang 的观点,unicorn 本身耗时比较少。

#22 楼 @zeeler

看了这篇文章,了解了很多原理。

#24 楼 @xiaoronglv 没错,当教程不错

年轻人精力可嘉,表扬一个。我是老了,不行了。

酷!这篇文章以及翻译太棒了!学习到了很多东西!

看了半天,每个线程都拥有自己的对象池,线程之间又不能分享这些对象,感觉好像在 app server 层次,实现了类似于 erlang 的轻量级进程的意思,貌似很吸引人,就是不知道付费的多线程版本实际效果会有多好,其实单核单线程的免费版貌似看起来也不错,就是不知道有没有实际应用来验证到底效果如何?

感觉上,汲取了之前各种模型的长处,并且做了好多改进,使得这些长处可以发挥更大的作用,并且通过很深层次的 hack, 让这些优点可以完美的互相工作,像梦一样的 hn 一站式 app server 解决方案呀。

有个问题:

一个正常大小的 Rails app 单个进程可以耗费 250MB 的内存

这有没有考虑 cow 的作用?真的得那么大么?

还有我希望指出一些我认为很明显的理解错误。(也许是楼主只是表达错了?)

  1. 在讲解多线程阻塞 IO 时,

所以反向代理缓存不必完全用来解决 slow client 问题

看原文,

They don’t solve the slow client problem entirely.

这个句子应该译为:

它们并没有完全解决 slow client 的问题。

  1. 在讲解 Mbufs 的 reentrant h 特性时,

Twemproxy 的原生版本依赖的是全局变量,使用多个线程才能让全局系统变成不可用。

原文是:

making the entire system unusable with multiple threads.

这个句子应该译为:

使用多线程时,整个系统将变的 y 不可用。

@zw963 Thanks,已更新。:)

@OhCoder , 有关 Copy On Write 占用内存的问题,能否回答下?

@zw963 原文只是用单个 rails application 的单进程应用举了一个例子,所以我的理解是这里和 copy on write 无关。至于说单个 rails application 的单进程占用的内存到底比 250MB 数值大还是小,其实不必纠结,数字只是用来举例说明问题的,:)

精神值得赞一个,也提供给我一个不一样的视角~

需要 登录 后方可回复, 如果你还没有账号请 注册新账号