2014-02-10 23 views
0

使用javascript/express/node開發Web應用程序。在我的本地計算機和Heroku上運行一段時間後(〜5分鐘),我必須重新啓動服務器,否則它不會響應請求。我不知道可能是什麼原因造成的。有沒有人處理過這樣的事情?node.js應用程序在一段時間後開始超時

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 

回答

2

我認爲這將是很好的開始here,尤其是調試請求超時部分可能會有所幫助:

調試請求超時請求

一個原因超時是代碼中的無限循環。在本地進行測試(可能是使用pgbackups下拉生產數據庫的副本),然後查看是否可以複製問題並修復該錯誤。另一種可能是你正在嘗試做一些長時間運行的任務你的web程序中,如:

  • 發送電子郵件
  • 訪問遠程API(發佈到Twitter,Flickr的查詢等)
  • 網絡刮削/爬行
  • 渲染圖像或PDF
  • 繁重的計算(計算斐波納契數列等)
  • 重數據庫的使用(緩慢或多次查詢,N + 1次的查詢)

如果是這樣,你應該將這個繁重的工作轉移到後臺作業中,後臺作業可以從你的web請求中異步運行。詳情請參閱後臺工作人員。

+0

謝謝,我確實看到,雖然搜索,現在正在研究這個http://stackoverflow.com/questions/18770284/node-js-requests-randomly-begin-to-hang-and-wont-clear-直到服務器重啓 – adam

相關問題