简单的装了 puma,只是再 gem 里面添加了而已,然后就rails s puma
,服务器启动了,网页也能打开,当我一下一下刷新的时候,还没问题,但是当我狂按刷新的时候就卡住了。。。
最后只能 Ctrl+C 退出来了。
unicorn 和 puma 都一样,两个都未经配置,直接通过rails s
启动,请问有遇到过这种问题嘛?这是因为我没有配置就直接当服务器启动的缘故嘛?
你有开 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 目前为止也没出现进程无故退了的现象
其实我表示我偶尔也会出现rails s
卡死的现象,服务器是默认的 webrick,我觉得这可能是 Mac 上特有的 Bug,因为感觉 Mac 经常因为个什么问题都卡在那里,就像死锁了一样。