2017-07-27 27 views
0

我在Digital Ocean中託管了一個Nodejs項目,並使用Forever腳本保持它運行。但是我意識到經過一段時間後會出現一些導致網站停播的錯誤。這不只是發生過一次,但已經幾次後,下方則是永遠的日誌:帶有Forever腳本的Nodejs在某段時間後將無法訪問

Error: Connection lost: The server closed the connection. 
    at Protocol.end (/var/www/menu/node_modules/mysql/lib/protocol/Protocol.js:109:13) 
    at Socket.<anonymous> (/var/www/menu/node_modules/mysql/lib/Connection.js:109:28) 
    at emitNone (events.js:72:20) 
    at Socket.emit (events.js:166:7) 
    at endReadableNT (_stream_readable.js:905:12) 
    at nextTickCallbackWith2Args (node.js:441:9) 
    at process._tickCallback (node.js:355:17) 
error: Forever detected script exited with code: 1 
error: Script restart attempt #178 
Listening on xxx.xxx.xxx.xxx, server_port 80 
events.js:141 
     throw er; // Unhandled 'error' event 

Error: connect ECONNREFUSED 127.0.0.1:3306 
    at Object.exports._errnoException (util.js:870:11) 
    at exports._exceptionWithHostPort (util.js:893:20) 
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1063:14) 
    -------------------- 
    at Protocol._enqueue (/var/www/menu/node_modules/mysql/lib/protocol/Protocol.js:141:48) 
    at Protocol.handshake (/var/www/menu/node_modules/mysql/lib/protocol/Protocol.js:52:41) 
    at Connection.connect (/var/www/menu/node_modules/mysql/lib/Connection.js:130:18) 
    at Connection._implyConnect (/var/www/menu/node_modules/mysql/lib/Connection.js:461:10) 
    at Connection.query (/var/www/menu/node_modules/mysql/lib/Connection.js:206:8) 
    at Object.<anonymous> (/var/www/menu/config/db.js:14:12) 
    at Module._compile (module.js:410:26) 
    at Object.Module._extensions..js (module.js:417:10) 
    at Module.load (module.js:344:32) 
    at Function.Module._load (module.js:301:12) 
error: Forever detected script exited with code: 1 

我不知道爲什麼作爲日誌沒有指出哪行是導致錯誤發生這種情況,而且好像永遠有嘗試重新啓動腳本但失敗。但是,一旦我SSH到我的服務器,並再次啓動,那麼它已經正常工作。任何人都可以幫忙?謝謝。

回答

0
Error: connect ECONNREFUSED 127.0.0.1:3306 

您收到此錯誤,表示該端口正在使用中。通過使用以下命令可以終止運行在該端口上的進程。

sudo kill $(sudo lsof -t -i:3306) 

此後,您可以重新部署您的服務器,像您一樣永遠使用。

+0

但之後的永遠重啓共有178次只是這個錯誤發生,所以這是不是導致腳本無法主要原因重新啓動吧? – Ping

+0

永遠無法重啓的原因是因爲你的mysql由於超時而被斷開連接,並且當你(永遠)嘗試重新連接進程時已經在運行 –

+0

這意味着服務器配置有問題。我建議你檢查永久日誌以找出錯誤。嘗試使用「永久記錄」列出日誌文件,然後列出「永久記錄(數字)」,這裏number是日誌文件的編號。 –