我有一个部署到Heroku的Rails应用程序。它目前拥有2倍的网络动态和1倍的工作人员动态。除此之外,目前没有活跃的用户。
当工作人员dyno正在运行时,app/web.1
上的H12错误频繁出现。当工人停止时,错误就会停止。
在应用内,用户可以上传CSV文件,然后DelayedJob在解析CSV文件的工作人员上运行服务,并保存Contact
,EmailAddress
和PhoneNumber
个对象到数据库。还有一些重复数据删除和一些合并逻辑。
工人跑得很完美。但是当它运行时,我在使用该应用程序时遇到了很多麻烦。大多数加载页面的尝试最终超时,我在日志中看到这样的条目:
Mar 31 10:52:54 abb heroku/router: at=error code=H12 desc="Request timeout" method=GET path="/contacts" host=abb.herokuapp.com request_id=a061e6b1-0233-4be1-9653-5db023d339ac fwd="99.17.86.166" dyno=web.1 connect=17ms service=30000ms status=503 bytes=0
Mar 31 10:53:18 abb heroku/router: at=error code=H12 desc="Request timeout" method=GET path="/" host=abb.herokuapp.com request_id=73d1e9e4-2e93-4e63-a86e-c8f90d22d172 fwd="50.250.42.142" dyno=web.1 connect=1ms service=30000ms status=503 bytes=0
Mar 31 10:53:39 abb heroku/router: at=error code=H12 desc="Request timeout" method=POST path="/contacts" host=abb.herokuapp.com request_id=83753eec-774b-4939-8ad5-3b5876c14151 fwd="99.17.86.166" dyno=web.1 connect=1ms service=30012ms status=503 bytes=0
Mar 31 10:53:49 abb heroku/router: at=error code=H12 desc="Request timeout" method=GET path="/favicon.ico" host=abb.herokuapp.com request_id=575492b9-e997-4be5-8044-1be37ec2eda6 fwd="50.250.42.142" dyno=web.1 connect=1ms service=30000ms status=503 bytes=0
我正在使用Ruby 2.3,Rails 4.2.5.1,Postgres用于数据库,我对Unicorn和Puma都有同样的问题。任何想法为什么工人造成这些问题?
我发现当我在开发和生产模式下本地运行应用程序时,我遇到了同样的问题。当工作人员正在处理CSV文件时,应用程序会挂起。