首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Puma偶尔超时的Rails

Puma偶尔超时的Rails
EN

Stack Overflow用户
提问于 2015-02-13 12:26:24
回答 1查看 2.4K关注 0票数 2

我在远程服务器上有两个Rails应用程序(生产和暂存环境)。

我目前遇到了一个奇怪的问题,在我完成部署(通过帽部署)后,美洲狮有时会给我超时时间。这种情况已经发生了很长一段时间,而且越来越频繁。无论何时发生这种情况,我都需要重新启动Puma服务器(来自cap puma:stopcap puma:start),或者手动执行kill -9 <pid of puma instance>。但是,在这两种情况下,我首先需要从rm puma.sock目录中提取shared/tmp/sockets

另一方面,我的生产环境没有经历过这个问题。它们之间的区别仅仅是提交,我的准备环境是几次(~50次)提前提交。早些时候,当我将阶段阶段合并到生产阶段并进行部署时,生产中也会出现同样的问题。因此,我将我的产品退回到以前的版本,重新启动了Puma,然后问题就消失了。

注意:cap puma:restart在某种程度上解决不了这个问题;为了解决这个问题,我必须杀死当前的Puma实例,并启动一个新的实例。

我目前的设置是:

  • Rails 4.1
  • 彪马
  • Nginx
  • 卡斯特拉诺3

在错误发生时,Rails日志中没有任何记录,但是Nginx记录了一些错误:

  • upstream timed out (110: Connection timed out) while reading response header from upstream 在等待60秒后,页面显示为500。
  • recv() failed (104: Connection reset by peer) while reading response header from upstream 500页面立即显示。
  • connect() to unix:/var/deploy/medictrust-staging/shared/tmp/sockets/puma.sock failed (111: Connection refused) while connecting to upstream 500页面立即显示。

上面的错误是随机发生的;有时连接超时,有时连接被拒绝。但最常见的情况是连接超时。

奇怪的是,如果我通过访问我的应用程序,那么它就不会超时。在Puma或Nginx配置中没有进行任何更改,那么这有可能是由应用程序代码引起的吗?

我怎样才能使这个问题永远消失?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-08 19:19:53

对我来说,web服务器正在超时,因为数据库中到处都是长期运行的查询,这就占用了可用的连接,让Puma等待一个新的连接可用。

作为急救,我重新启动了我的MySQL服务器,它立即工作。我很遗憾我没有记录缓慢的查询,因为这个查询肯定是我的Rails应用程序中一些坏代码的结果。

另外,这个答案也很有帮助:Getting “Lock wait timeout exceeded; try restarting transaction” even though I'm not using a transaction

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28499618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档