簡體   English   中英

間歇性502壞網關錯誤(使用nginx,nodejs,mongodb)

[英]Intermittent 502 bad gateway error(using nginx,nodejs,mongodb)

我們使用nodejs(v 0.10.29),express,nginx(版本1.4.6)和mongodb(v 2.6.3)replicaset並獲得間歇性的502錯誤網關錯誤。 雖然nginx aerror.log正在顯示,但是pm2 logs無法記錄錯誤

recv() failed (104: Connection reset by peer) while reading response header from     upstream, client: xxx.xxx.xxx.xxx, server: somedomain.com, request: "GET /img/abc.png HTTP/1.1", upstream: "http://127.0.0.1:3000/img/abc.png", host: "domain.com", referrer: "http://domain.com/admin/"

和access.log說:

"GET /url/abc.html HTTP/1.1" 502 723 "http://domain.com/admin/" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36"

任何人都可以指導我這個問題嗎?

它可能不是nginx本身的問題,但更多的是nodejs的問題。 502錯誤網關錯誤意味着nginx向nodejs服務器詢問了一些信息,並且nodejs服務器應答,然后“立即掛斷電話”。 “掛斷電話”更多地是對“消息的連接重置”部分的引用。

現在,這可能表明存在許多不同的問題,所以我無法給出明確的答案。

可能是在處理請求時存在實際錯誤,這需要通過js代碼跟蹤錯誤。

這可能是一個內存問題(你的內存使用情況如何)?

或者它可能是節點部分的超時錯誤,要么是因為返回答案花了太長時間,要么因為代碼有問題,或者因為系統內存不足。

我知道我曾經在nginx和php-fpm之間得到間歇性的超時錯誤,因為nginx會放棄等待php。 我調整了內存使用情況和超時設置來修復它(我優化了php代碼)。

如果您可以提供有關內存/負載使用情況或來自節點或應用程序的日志的更具體信息,或者甚至是502錯誤中的一般模式(它是否已本地化到地理區域,瀏覽器,操作系統?),那么答案可能是不那么投機。

在服務器到服務器的連接上發生了這種情況。 Node.js服務器在Nginx拍攝了300-400個子彈包,如:

get http://example.com/?a=1&b=2&c=3

第二個不能按時回應,放棄說502

我遇到的解決方案是在較小的塊中逐個發送請求。

在我們的例子中,nginx位於Node.js之上,由Forever自動啟動。 由於Redis數據庫內容中的錯誤,節點服務器間歇性地崩潰,並且nginx返回502或503錯誤。 我們花了一些時間才找到原因,因為Node的崩潰消息僅由Forever記錄。

因此,在nginx或其配置上沒有失敗,節點服務器(及其后台服務)是源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM