引发这个考虑的是因为我一直用的是 passenger+nginx,然后我想在 passenger 配置中加入 passenger_max_instances: 6
时,告诉我企业版才支持这个配置,说白了就是需要买吧
于是我又去搜了其它的一些 server,比如 puma
,unicorn
,想知道他们的性能和 passenger 比起来如何,本来想选择 puma 的,然后在 passenger 的官网看到了这个
然后我就陷入了沉思....
现在选 puma 吧,文档比较好看,社区氛围浓,比 unicorn 多了线程方式的并发。Heroku 把推荐 server 从 unicorn 改成 puma 了。
这两个 Open Source 版本都支持啊?passenger_max_instances
是新的标志?
http {
passenger_max_pool_size 21;
passenger_max_instances_per_app 6;
}
其实用 passenger_max_instances_per_app 就好了,免费版本够用的 大部分主流的 server 我都用过 rainbow/puma/thin/unicorn 但我上一个用的是 passenger,免费版本。 线程类的没有 server 没有想象中的那么好,可靠性不高。经过压测,综合性能和可靠性,我选的是 passenger
现在的公司用的 unicorn,性能和可靠性还没有发现什么特别的问题,就是不能 touch ...
#26 楼 @as181920 https://github.com/puma/puma/tree/master/tools/jungle/upstart 这里,不过我按照这种方式提示我启动成功,但是仍然打不开
前几天正好看了一篇关于 Rails 服务器比较的文章,这里贴出来,你可以参考参考,虽然说的是 Heroku,但其实都差不多。 结论是推荐集群模式的 Puma 和 Passenger 5,当然 Nginx+Unicorn 也不错
个人是非常喜欢 Passenger. 部署简单,且性能强大。
给楼主贴一篇文章 Ruby Web 服务器:这十五年
希望对楼主的选择有所帮助,并引用一下其中的一段:
以最新的 Raptor(上文提到的 Phusion Passenger 5)为例,其在网络 I/O 模型的选择上融合了现有其它优秀产品的方案,包括 Unicorn 的多进程模型、内置基于多线程和事件 I/O 模型的反向代理缓冲(类似 Nginx 的功能,但对 Raptor 自身做了大量裁减和优化)、以及企业版具有的多线程模型(类似 Puma 和 TorqueBox);此外,Raptor 采用的 Node.js HTTP Parser(基于 Nginx 的 Parser)的性能超过了 Mongrel;更进一步,Raptor 甚至实现了 Zero-copy 和一般在大型游戏中使用的区域内存管理技术,使其对 CPU 和内存访问的优化达到了极致(感兴趣的话可以进一步查阅这里)。
Ruby China 是这样的:
Unicorn -> Puma -> Unicorn
Unicorn 感觉是一个老大哥,放心稳妥,其实两者实际用下来看,差别不大
现在可以直接使用 Passenger 的 APT Source,几行命令就部署了。Passenger 的 Source 里面自带的 Nginx 编译质量没有问题,版本更新速度比 Ubuntu 官方要快很多,最近两年用下来,我感觉无槽点。
我们也首选 Unicorn,但是现在在慢慢向 puma 过渡中。项目遇到一些问题就是,比如有些功能是依赖于第三方的服务,好比 Github 验证登陆。如果并发量大的话,多进程的服务器就会比较容易遇到瓶颈。
Puma +1
In order to get the best throughput, it is highly recommended that you use a Ruby implementation with real threads like Rubinius or JRuby.
意思是 ruby 版本最好还是 Rubinius
和 JRuby
是吧