部署 Rails 到底该选择什么 server

hxh1246996371 · 发布于 2015年08月10日 · 最后由 imwildcat 回复于 2015年10月10日 · 8487 次阅读
10401
本帖已被设为精华帖!

引发这个考虑的是因为我一直用的是passenger+nginx,然后我想在passenger配置中加入 passenger_max_instances: 6 时,告诉我企业版才支持这个配置,说白了就是需要买吧

于是我又去搜了其它的一些server,比如 pumaunicorn,想知道他们的性能和passenger比起来如何,本来想选择puma的,然后在passenger的官网看到了这个

然后我就陷入了沉思....

共收到 61 条回复
1

现在选 puma 吧,文档比较好看,社区氛围浓,比 unicorn 多了线程方式的并发。Heroku 把推荐 server 从 unicorn 改成 puma 了。

https://devcenter.heroku.com/changelog-items/594

10401

#1楼 @rei 我也感觉这应该是最好的选择了

370

选 Puma 又开了 Rails 的多线程支持,可能要额外注意一下线程安全问题。

115

我新项目都用 puma, 以前的老项目, 代码量大, 依赖版本低, 就还是用 unicorn.

Eda824

这两个Open Source版本都支持啊?passenger_max_instances是新的标志?

http {
    passenger_max_pool_size 21;
    passenger_max_instances_per_app 6;
}
15295

刚使用上 unicorn, 难道要转成 puma? 😪

15139

unicorn就挺好啊。如果你是企业用户,买一下passenger也无可厚非吧。不是企业用户没必要这么专注于性能。

96

我们用rainbows

244

一直不认可passenger这种盈利模式,我就直接unicorn了

3

#10楼 @fsword 纯好奇,不认可的理由是什么呢?

244

#11楼 @lgn21st 太小家子气了,做不大,这种东西都该把主要功能开源,允许大家私搭乱建,然后自己直接用云提供托管服务,把专业技术通过运维能力展现出来

3

#12楼 @fsword 那么产品和技术方面呢?因为听起来感觉是因为觉得对方不擅长商业运作,所以不选择这家的产品。

244

#13楼 @lgn21st 其实我说的就是产品形态,技术服务就是应该以托管的形式,最好是saas,不然容易增加学习成本。我觉得passenger就是个配置简化工具,如果我要学习,不如直接学习如何运维unicorn等等。

10401

#6楼 @ericguo 之前是可以,但是现在已经只能在企业版下使用了

370

#14楼 @fsword 这样的话,Passenger 就会变成和 Heroku 竞争,但是 Passenger 团队很小,SaaS 是资本密集型+劳动力密集型的。

713

其实用passenger_max_instances_per_app就好了,免费版本够用的 大部分主流的server我都用过 rainbow/puma/thin/unicorn 但我上一个用的是passenger,免费版本. 线程类的没有server没有想象中的那么好,可靠性不高. 经过压测,综合性能和可靠性,我选的是passenger

现在的公司用的unicorn,性能和可靠性还没有发现什么特别的问题,就是不能touch ...

15420

哈哈,那天也发现passenger 的这功能要付费

10401

#17楼 @azhao passenger_max_instances_per_app这个貌似也行哈

3444

感觉快要抵挡不住诱惑从 unicorn 改用 puma 了...

96

puma

10401

昨天折腾了一天的puma 硬是没有跑起来

Abca79

#20楼 @flypiggys 我已然没有抵挡住的尝试了。

5023

跟我昨天遇到的情形一样,纠结于三种app server。目前先用passenger

10401

没啥问题的话,我也不想折腾了,暂时先用passenger吧

2511

借道问,用puma/unicorn后,大家是怎么配置让其开机自动启动的?passenger的话可以随着系统nginx服务起来。

10401

#26楼 @as181920 https://github.com/puma/puma/tree/master/tools/jungle/upstart 这里,不过我按照这种方式提示我启动成功,但是仍然打不开

Abca79

#26楼 @as181920 类似一个服务(server) 也就是一个进程 其实简单来说就是启动一个进程

370

#26楼 @as181920 写 init script

3a5cee

前几天正好看了一篇关于Rails服务器比较的文章,这里贴出来,你可以参考参考,虽然说的是Heroku,但其实都差不多。 结论是推荐集群模式的Puma和Passenger 5,当然Nginx+Unicorn也不错

2443

@kgen 求问, 为啥 SaaS 是劳动力密集型~

370

#32楼 @wppurking Ops + Support 现在国内外非一流的云平台,自动程度仍然不高,大量运维人工介入的。

2963

我懒,所以我 Passenger + Apache 我以前的 Nginx + php-fpm 我都换 Apache 了 简单方便不折腾

B4c653

个人是非常喜欢 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和内存访问的优化达到了极致(感兴趣的话可以进一步查阅这里)。

2564

#35楼 @poshboytl :plus1: 我也用的passenger,很不错,简单省心

De6df3

Ruby China 是这样的:

Unicorn -> Puma -> Unicorn

Unicorn 感觉是一个老大哥,放心稳妥,其实两者实际用下来看,差别不大

3

#37楼 @huacnlee 要不要试试看 Passenger 5.0?在生产环境一只在用,稳定,可靠,而且维护非常省心。

De6df3

#38楼 @lgn21st 可以啊,你来部署试一下

其实我是一直不喜欢 Passenger 就是要和 Nginx 一起编译,standalone 方式的还能接受。

3

#39楼 @huacnlee 嗯,好。

现在可以直接使用 Passenger 的 APT Source,几行命令就部署了。Passenger 的 Source 里面自带的 Nginx 编译质量没有问题,版本更新速度比 Ubuntu 官方要快很多,最近两年用下来,我感觉无槽点。

10401

#35楼 @poshboytl 已经决定使用passenger了 省事

Abca79

#41楼 @hxh1246996371 passenger 省事了 但是负载均衡的时候就知道很苦逼了 。 但是每个服务器上都启 nginx 也无妨

1090

我们也首选Unicorn,但是现在在慢慢向puma过渡中。项目遇到一些问题就是,比如有些功能是依赖于第三方的服务,好比Github验证登陆。如果并发量大的话,多进程的服务器就会比较容易遇到瓶颈。

8643

passenger路过, 如#39大神所说, 已经不需要混合编译了

4508

puma能用非线程安全的gem吗?

1638

#1楼 @rei

Puma +1

  1. Puma 省内存。 Unicorn 一个进程 120M - 140M,Puma 一个进程 80M-120M。
  2. Puma 是多线程的 server,同样配置的机器干更多的活。
10401

#46楼 @xiaoronglv

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版本最好还是 RubiniusJRuby 是吧

15420

#46楼 @xiaoronglv 好强大! :plus1:

19848

有没有一种类似uwsgi的服务?

20551

passenger5不停机部署貌似也是收费的了? 另外,unicorn的慢客户端的确是很困扰啊...

4584

Apache + Passenger感觉比较爽,很方便。 项目中也用过Unicorn和Puma,后来都只用Puma了,感觉要省一点点内存

10401

反正我现在还是回到Passenger了,以后有需求再考虑换成其它的吧

96

#37楼 @huacnlee gitlab 也这么走过 Unicorn -> Puma -> Unicorn 可能当时 Puma 稳定性还不如 Unicorn

17740

rails 的应用服务器处理静态资源的能力太弱了

10401

#54楼 @zouyu 资源文件一般单独撘一个nginx静态文件服务器吧

15615

#55楼 应该是通用做法,赞成!

10401

#57楼 @zouyu 不过我现在网站直接用的是阿里云的OSS,不拖慢自己低配的服务器了,呵呵

15615

复用而不重复造轮子正是ROR的核心思想

96

#54楼 @zouyu 靜態的直接放 CDN 比較好。我的一個 App 就是這麼設計的。

14174

#37楼 @huacnlee 能否问下现在 Ruby China 的内存占用为多少?MongoDB 用多少内存?

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