部署 Puma 还是有问题, 不稳定

kikyous · 2016年03月02日 · 最后由 cxh116 回复于 2016年03月03日 · 2895 次阅读

做了一个小应用,部署在 daocloud 上,之前用的是 puma,运行时日志随机出现

2016-02-29 01:21:57:[App/0] 17:21:57 web.1   | EFAULT
2016-02-29 01:21:57:[App/0] 17:21:57 web.1   | 
2016-02-29 01:21:58:[App/0] 17:21:57 web.1   | ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
2016-02-29 01:21:58:[App/0] 17:21:57 web.1   | 
2016-02-29 01:21:58:[App/0] 17:21:57 web.1   | [NOTE]
2016-02-29 01:21:58:[App/0] 17:21:57 web.1   | You may have encountered a bug in the Ruby interpreter or extension libraries.
2016-02-29 01:21:58:[App/0] 17:21:57 web.1   | Bug reports are welcome.
2016-02-29 01:21:58:[App/0] 17:21:57 web.1   | For details: http://www.ruby-lang.org/bugreport.html
2016-02-29 01:21:58:[App/0] 17:21:57 web.1   | 
2016-02-29 01:22:02:[App/0] 17:22:02 web.1   | [9] - Worker 0 (pid: 104) booted, phase: 0
2016-02-29 01:22:02:[App/0] 17:22:02 web.1   | [9] - Worker 1 (pid: 107) booted, phase: 0

要命的是每过一两天程序就没响应了,只能重启 container, 换成 ruby2.2 也一样 , 到网上搜了一下,类似的问题存在好久了 https://github.com/puma/puma/issues/554

最后换成 unicorn 运行三天多了,没出现问题。

不过公司的网站用的 puma 就很稳定,没出现什么问题

也有可能是线程安全的问题,Unicorn 和 Puma 有这个区别。Ruby China 也用 Puma 最新版本跑了很久了,没问题

先确认你的应用是不是线程安全的,如果不是,就用 unicorn 代替。

#2 楼 @kgen #1 楼 @huacnlee 怎么确认是不是线程安全的?rails 4.2 的应用

#5 楼 @zhang_soledad rails 4.2 的 threadsafe! 默认是打开的

我也应用过一段时间的 puma,也是因为线程安全的问题换回了 unicorn

我用 puma 挺久的了 一直没出什么大问题 挺好的

最简单的尝试是不是线程安全,把 -t 参数 设置为 1:1 .只设置为一个线程。

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