在Ubuntu服务器上使用puma的Rails应用程序会在一段时间后冻结

时间:2016-05-11 13:36:43

标签: ruby-on-rails ubuntu puma

我已经安装了一个Ubuntu Server VM来托管我的应用程序。

应用程序在我启动后完美运行。一段时间不活动(大约5分钟没有请求),当我向它发送请求时,应用程序停止响应。 服务器记录:

Started GET "/" for 190.104.243.172 at 2016-05-11 13:22:46 +0000

仅此而已。它应该记录:

Started GET "/" for 190.104.243.172 at 2016-05-11 13:22:46 +0000
Processing by DashboardController#root as HTML
Completed 401 Unauthorized in 0ms (ActiveRecord: 0.0ms)
Started GET "/users/sign_in" for 190.104.243.172 at 2016-05-11 13:24:16 +0000
...

它似乎没有在收到请求后处理请求。

这是我的puma.rb配置文件

threads_count = Integer(ENV['MAX_THREADS'] || 16)
threads threads_count, threads_count
workers 1


preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
  ActiveSupport.on_load(:active_record) do
    ActiveRecord::Base.establish_connection
  end
end

before_fork do
  ActiveRecord::Base.connection_pool.disconnect!
end

例如,如果我将工人数量更改为2,则5分钟后的第一个请求将起作用。如果我再等5分钟,它会冻结。所以绝对必须是工人悬挂或没有正确装载的东西。

这是我ps -aux | grep puma

时得到的结果
user 57674  1.2 11.0 1003076 189780 ?      Ssl  16:14   0:12 puma 3.4.0 (tcp://0.0.0.0:3000) [be-better-hotels]                                                                         
user 57771  0.4 14.4 1497004 247484 ?      Sl   16:15   0:04 puma: cluster worker 0: 57674 [be-better-hotels]  

编辑:在向挂起的服务器发出请求30分钟后,客户端收到500内部服务器错误,服务器显示此错误消息:

PG::UnableToSend (SSL SYSCALL error: EOF detected):

非常大的堆栈跟踪。

1 个答案:

答案 0 :(得分:-1)

我使用纯RAM实例在DO水滴上遇到了同样的问题..我所做的一切 - 添加了交换。