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

ohcoder · 2014年11月13日 · 最后由 psvr 回复于 2016年06月02日 · 9248 次阅读
本帖已被设为精华帖!

昨天看到斑竹分享了一篇介绍 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 这章就没继续往下看了,挺费时的

:plus1:

翻译好赞!! 猜测性能的提升 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 数值大还是小,其实不必纠结,数字只是用来举例说明问题的,:)

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

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