新手问题 Rails 开发环境, Puma 跑,不停刷新,结果页面卡死了。。。

levan · 2013年05月30日 · 最后由 Levan 回复于 2013年05月30日 · 8009 次阅读

简单的装了 puma,只是再 gem 里面添加了而已,然后就rails s puma,服务器启动了,网页也能打开,当我一下一下刷新的时候,还没问题,但是当我狂按刷新的时候就卡住了。。。 最后只能 Ctrl+C 退出来了。 unicorn 和 puma 都一样,两个都未经配置,直接通过rails s启动,请问有遇到过这种问题嘛?这是因为我没有配置就直接当服务器启动的缘故嘛?

另外想请教一下,puma 官网的这个测试图,对不懂深度配置的新手来说,有意义吗?

你有开 threadsafe 么?Rails 没开的时候你用 puma 跑的依然是单线程的 Unicorn 跑的话就是单线程

你应该是处于单线程,单进程的状态,这个时候你每秒能响应的请求数量理论上可以这么算:

1000ms / 40ms (动态页面的响应时间) = 25 个请求每秒

你刷新一下还有一些 Assets 的请求耗时,所以我估计你一次刷新需要耗费的时间应该在 100ms 左右,也就是次每秒能响应的刷新是 10 次左右,一直按着刷新发出的刷新屏率应该会比 10 更多。

至于为什么会卡死掉,这个原因我不清楚。

#2 楼 @huacnlee 刚刚试了一下rails s puma确实用的 puma 进程

$ rails s puma
=> Booting Puma
=> Rails 3.2.13 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Puma 2.0.1 starting...
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://0.0.0.0:3000

不过一个内部项目跑的 puma,发生过几次 puma 进程无故退了项目不能访问的情况,不知道是代码导致的还是 puma 的问题。 另一个项目 unicorn 提供的服务,一直没出现过这个现象。puma 的项目换成 unicorn 目前为止也没出现进程无故退了的现象

@huacnlee 哦。。。明白了!It's so kind of you

#3 楼 @leopku 那是因为 Unicorn 是有守护进程(master)的,而 Puma 没有,一有导致崩溃的事情发生,进程就没了,Unicorn 就会自动启动

@huacnlee 请问,从各发面成本来说,对新手是推荐使用 puma 还是 unicorn?

#5 楼 @huacnlee 原来如此,多谢!

#6 楼 @Levan 我用下来的感觉是:Puma 省内存,Unicorn 多进程费内存,但稳定性更好,速度来说都差别不大。

@huacnlee 好的,那我还是用 Unicorn 吧,现在服务器的内存不缺。求稳定。把重心放在开发上。THX

#9 楼 @Levan 就算用 Puma 也得打开 threadsafe 才行,另外,你可以尝试一下 Rainbows,它和 Unicorn 一样有守护进程,能同时多线程多进程

#7 楼 @leopku 多线程可以试试 rainbows 是 unicorn 作者写的多线程版本

其实我表示我偶尔也会出现rails s卡死的现象,服务器是默认的 webrick,我觉得这可能是 Mac 上特有的 Bug,因为感觉 Mac 经常因为个什么问题都卡在那里,就像死锁了一样。

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