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

kikyous · March 02, 2016 · Last by cxh116 replied at March 03, 2016 · 2888 hits

做了一个小应用,部署在 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 的应用

#3 楼 @kikyous 要一点点排查吧

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

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

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

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

You need to Sign in before reply, if you don't have an account, please Sign up first.