Nginx負載均衡引起的網站不可用
二,看看前端nginx負載均衡器。
我們來看一下nginx的配置文件
乍一看,好像也沒什麼問題。經過仔細的檢查。發現問題,
我們來看一下,nginx配置文件里的這一句。
proxy_next_upstream error timeout http_503 http_500 http_502 http_504;
這句的意思,就是說
當遇到 503 、500、502、504錯誤時,跳到下一個節點。我在想,後端的lighttpd機器報很多500錯誤,雖然不影響,但是nginx 會跳到下一個節點,並在upstream裡面fail_timeout值的時間內將此節點標記不可用。如果下一個節點還是500呢,又會標記不可用,那就完,兩個點都不可用,那不全掛嗎。
為證實我的想法,
我找一個報警的時間段。看一下後端的lighttpd日誌。
我們對比看一下,發現在 16.點52分 09- 10秒的時候。都出現500錯誤。
我們看一下nginx在這個時間的錯誤日誌
我們看到
在 16點 52分11秒的時候, nginx 出現報錯,
報錯的內容為 no live upstreams,意思就是沒有後端機器。也就是說,後端兩台都不可用。
找到錯誤原因,那就好解決。
第一,聯繫項目組找到500錯誤的原因。並解決。
第二,修改nginx的配置文件,
在 proxy_next_upstream error timeout http_503 http_500 http_502 http_504; 這段里,將 http_500 去掉。意思也就是說,當出現500錯誤的時候,對nginx來不不影響,該幹嘛還幹嘛。
修改後,果然再沒有報警問題。
以下文章點擊率最高
Loading…