我已經將Bitnami Parse堆棧部署到Google Cloud VM。這個堆棧基本上是Apache作爲代理運行,然後是一個MEAN堆棧處理解析服務器和儀表板等。Parse Server + Express - ParseError和站點死機/重新啓動的問題
當訪問儀表板併發送單獨的CURL請求來測試它是否全部可用時,一切似乎都正常工作。
然而,似乎有一個致命的缺陷。當Parse返回其中的一個錯誤,例如
{"code":101,"error":"Object not found."}
Express將其視爲未捕獲的異常並死亡。現在我意識到這是故意行爲(有足夠的信息,爲什麼你不想在未捕獲的異常後堅持)
Bitnami堆棧使用Forever來運行分析服務器,但正如你可以從我將在下面包含日誌,但您仍然遇到拒絕連接的問題。
2016-11-25T11:41:16+00:00 DEBUG (7): {"code":101,"error":"Object not found."}
2016-11-25T11:41:16+00:00 DEBUG (7): Failed to connect to X.X.X.X: Connection refused
2016-11-25T11:41:17+00:00 DEBUG (7): Failed to connect to X.X.X.X: Connection refused
2016-11-25T11:41:17+00:00 DEBUG (7): Failed to connect to X.X.X.X: Connection refused
2016-11-25T11:41:17+00:00 DEBUG (7): Failed to connect to X.X.X.X: Connection refused
與此同時,在永遠的記錄:
Error generating response. ParseError { code: 101, message: 'Object not found.' } code=101, message=Object not found.
[object Object]
/opt/bitnami/apps/parse/htdocs/node_modules/parse-server/lib/ParseServer.js:425
throw err;
^
Error: EACCES: permission denied, open '/opt/bitnami/apps/parse/htdocs/logs/parse-server.info.2016-11-25'
at Error (native)
error: Forever detected script exited with code: 7
error: Script restart attempt #1
parse-server running on port 1337
parse-dashboard running on port 4040
所以,你可以看到正在返回緊跟一個解析錯誤,服務不可用,直到永遠可以重新啓動服務器解析。
此問題似乎也會影響所有用戶,所以如果一個用戶收到異常,所有用戶都會在短時間內失去連接。
所以問題是,這應該如何妥善處理? Parse + Express不是這種方式嗎?或者是否有一些配置節點或Express的方法來將API錯誤返回給請求者,而不需要快速死亡(並且不必陷入使用uncaughtException來保持節點活着的陷阱)
任何幫助將不勝感激,謝謝
是不是它只是一個來自Parse的權限錯誤?我認爲Parse不能將信息日誌寫入日誌目錄。 – iKoala
哇,我希望它是這麼簡單..然而,我沒有檢查/ opt/bitnami/apps/parse/htdocs/logs /上的權限,它由用戶節點正在運行,並且用戶擁有寫權限 –
我認爲錯誤日誌說它是'Access Error'。如果它只是開發服務器,你是否嘗試將'/ opt/bitnami/apps/parse/htdocs/logs'設置爲777? – iKoala