how we’ve made Raptor fast. The performance is mostly thanks to our HTTP server implementation. We’ve written a custom, embedded HTTP server in C++, completely optimized for performance.
非常系统的一篇文章,详细解释了 Rails 的 web server 工作原理。 从文章上看,算是针对 Rails server 的各种性能优化加强版,不知道实际用下来效果如何? 有个问题要问 Passenger,到底 Rails server 哪家强?
根据我的理解,Raptor 似乎会把 Nginx 反向代理的功能集成起来。 其实在我实际使用的过程中,Unicorn 搭配 Nginx 会快很多(直观感受,没有实际测过)
我也在关注 Raptor。文章里面说的道理很好,但是很多代码,应该不是 Ruby 写的。 Raptor 不是专供 Rails,而是 Ruby App Server,它也是基于 Rack。 Ruby 在 HTTP Server 方面的瓶颈,主要在 Rack 的架构瓶颈,以及 MRI Ruby 的线程瓶颈,还有就是 GC 的低效。 如果 Raptor 没在 Rack 里面做手术,没用线程支持更好的 JRuby 之类去跑,估计很难有革命性的提升。 只是针对一些特定场景的 benchmark 结果好看罢了。
文章里面介绍 Raptor 的路线,估计会和 Sidekiq 一样,核心代码开源,免费使用。也可以花钱购买商业版,有更多功能实现,那部分代码不开源。
有个 Rails 程序员不幸车祸成了植物人,家人问医院怎么办,医院的人跟他说,跟他说点刺激的话,后来家人找来他同事帮忙,他同事每天都来说:“老板说你用 Rails 做的网站好慢啊,Rails 好慢啊!”,有点反应,但效果不明显,有天他同事过来说:“Raptor 比 Unicorn 快 4 倍,比 Puma 快 2 倍,你要不要试试?”,好,这这句话管用,他一下就醒了,连忙问:“Github 地址呢?”
#12 楼 @meeasyhappy 真实的链接我也不知道,人都说了 25 号才公布,这会儿估计还是一个 Private Repo 呢。只不过你说的那个我太了解了,肯定不是一个 Web Server,它是 Gary 大神捣鼓的一个玩具,是一个 MVC 框架。
早上在地铁上,认真仔细的看完文章。 Raptor 是一个 MultiProcess+MultiThreaded + Evented I/O 模式,集合了之前的三中 app Server 的优势(但是呵呵 MultiThreaded 开源版本是没有的 需要 paid Dollar 才能用) ,尤其是内置的 http parser 做了很多的优化,以及采用了 Zero-Copy 的方式节省多进程之间共享内存的拷贝。Zero-copy 的架构采用了 mbufs and scatter-gather I/O
The builtin HTTP server is about twice as fast as Nginx. This is because it’s completely designed for the workloads that Raptor handles. In return, it has fewer features than Nginx. For example, our builtin HTTP server doesn’t handle static file serving at all, nor gzip compression. It trades features for performance. Having said this, you can still enjoy all the Nginx features by proxying Raptor behind Nginx, or by direct Nginx integration. This is fully supported and it’s something that we will elaborate on in a future blog post.
gzip 都没有这种性能提高有意义吗?