Ruby on rails 带彪马的钢轨偶尔超时
我在远程服务器上有两个Rails应用程序(生产和暂存环境) 我目前遇到一个奇怪的问题,Puma有时会在我完成部署(通过cap部署)后给我超时。这种情况已经发生了相当长的一段时间,而且越来越频繁。无论何时发生这种情况,我都需要重新启动Puma服务器(从Ruby on rails 带彪马的钢轨偶尔超时,ruby-on-rails,nginx,capistrano,puma,Ruby On Rails,Nginx,Capistrano,Puma,我在远程服务器上有两个Rails应用程序(生产和暂存环境) 我目前遇到一个奇怪的问题,Puma有时会在我完成部署(通过cap部署)后给我超时。这种情况已经发生了相当长的一段时间,而且越来越频繁。无论何时发生这种情况,我都需要重新启动Puma服务器(从cap Puma:stop和cap Puma:start),或者手动执行kill-9。但是,在这两种情况下,我首先需要从shared/tmp/sockets目录rm puma.sock 另一方面,我的生产环境没有遇到这个问题。它们之间的区别只是提交次
cap Puma:stop
和cap Puma:start
),或者手动执行kill-9
。但是,在这两种情况下,我首先需要从shared/tmp/sockets
目录rm puma.sock
另一方面,我的生产环境没有遇到这个问题。它们之间的区别只是提交次数,我的暂存环境是前面几次(约50次)提交。早些时候,当我将暂存合并到生产并部署时,生产中也出现了同样的问题。因此,我将我的产品回滚到以前的版本,重新启动Puma,问题就消失了
注意:cappuma:restart
不知何故无法解决此问题;我必须杀死当前的Puma实例,并启动一个新实例,以解决此问题
我当前的设置是:
- 轨道4.1
- 美洲狮
- Nginx
- 卡皮斯特拉诺3
上游超时(110:连接超时)从上游读取响应头时等待60秒后,显示500页。
页面立即显示500个响应头。recv()从上游读取响应头时失败(104:对等方重置连接)
立即显示500页。connect()到unix:/var/deploy/medictrust staging/shared/tmp/sockets/puma.sock在连接到上游时失败(111:连接被拒绝)
如何使这个问题永远消失?对我来说,web服务器超时是因为数据库中到处都是长时间运行的查询,这占用了可用的连接,并使Puma等待新的连接可用 作为急救,我重新启动了我的MySQL服务器,它立即工作。我很遗憾没有记录慢速查询;因为那个查询一定是我的Rails应用程序中一些错误代码的结果
此外,这个答案也很有帮助:你有没有想过这个答案?我正在处理类似的事情,但只是在我的生产环境中。嘿@steel,如果我没记错的话,web服务器超时是因为数据库中到处都是长时间运行的(读取:卡住)查询。可用的数据库池已耗尽,Puma一直在等待卡住的查询完成。要检查我的问题是否与您的类似,只需登录生产数据库并运行
SHOW FULL PROCESSLIST
。以下是一个帮助我的答案: