node.js应用程序在一段时间后开始超时

时间:2014-02-10 01:34:09

标签: heroku

使用javascript / express / node开发Web应用程序。在我的本地机器和Heroku上运行一小段时间(约5分钟)后,我必须重新启动服务器,否则它永远不会响应请求。我不知道是什么原因引起的。有没有人以前处理过这样的事情?

2014-02-10T01:25:29.935130+00:00 app[web.1]: GET / 304 281ms
2014-02-10T01:25:29.936342+00:00 heroku[router]: at=info method=GET path=/ host=wwwcom request_id=8d2cd623-c379-4e6a-8b30-1021dd2f5d18 fwd="" dyno=web.1 connect=2ms      service=284ms status=304 bytes=0
2014-02-10T01:25:30.096768+00:00 heroku[router]: at=info method=GET path=/css/style.css host=wwwcom request_id=953f1c0c-65ce-4ac7-bfc5-04d5bec2791a fwd="" dyno=web.1 connect=2ms service=7ms status=304 bytes=0
2014-02-10T01:24:10.997307+00:00 heroku[router]: at=info method=GET path=/img/money.jpg host=wwwcom request_id=b1eb7f92-98ae-466d-8e03-a7539215936a fwd="" dyno=web.1 connect=2ms service=2ms status=304 bytes=0
2014-02-10T01:25:30.171105+00:00 heroku[router]: at=info method=GET path=/img/money.jpg host=wwwcom request_id=fd9244d0-22eb-4e28-ac81-b820bcab753b fwd="" dyno=web.1 connect=16ms service=4ms status=304 bytes=0
2014-02-10T01:27:58.989371+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path=/ host=wwwcom request_id=ddcb47a6-b250-49ea-8ba8-9c9da4c41c91 fwd="" dyno=web.1 connect=1ms service=30001ms status=503 bytes=0
2014-02-10T01:27:58.997153+00:00 app[web.1]: GET / 200 30003ms

1 个答案:

答案 0 :(得分:2)

我认为开始here会很好,特别是调试请求超时部分可能有所帮助:

调试请求超时

请求超时的一个原因是代码中的无限循环。在本地测试(可能使用pgbackups下载生产数据库的副本),看看是否可以复制问题并修复错误。另一种可能性是您尝试在Web流程中执行某种长期运行的任务,例如:

  • 发送电子邮件
  • 访问远程API(发布到Twitter,查询Flickr等)
  • 网页抓取/抓取
  • 渲染图像或PDF
  • 重计算(计算斐波那契序列等)
  • 繁重的数据库使用(慢速或大量查询,N + 1次查询)

如果是这样,您应该将这个繁重的工作移到后台作业中,后台作业可以从您的Web请求异步运行。有关详细信息,请参阅后台工作人员。