日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nginx 负载均衡502问题

發布時間:2024/3/24 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx 负载均衡502问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目架構:nginx+php fpm 負載均衡

負載均衡關鍵配置如下:

#引入負載均衡配置include proxy.conf;#負載均衡upstream test_balance {server 172.28.196.xxx:80 weight=100; #遠端服務server 127.0.0.1:20000 weight=100;keepalive 256;}

出現問題:

當某個php服務報錯后,整個負載均衡返回502,并且非報錯接口同樣返回502,問題非常嚴重,因為php的優勢就是解析執行,不相干代碼應該不會干擾才對,但上負載后出現 只要整個項目某個接口返回500,短時間內所有接口都會返回502

解決:

一:設置 max_fails=1 跟 fail_timeout=1
max_fails默認值為1,fail_timeout默認值為10秒。

nginx可以通過設置max_fails(最大嘗試失敗次數)和fail_timeout(失效時間,在到達最大嘗試失敗次數后,在fail_timeout的時間范圍內節點被置為失效,除非所有節點都失效,否則該時間內,節點不進行恢復)對節點失敗的嘗試次數和失效時間進行設置,當超過最大嘗試次數或失效時間未超過配置失效時間,則nginx會對節點狀會置為失效狀態,nginx不對該后端進行連接,直到超過失效時間或者所有節點都失效后,該節點重新置為有效,重新探測.

通過上面可知道,返回502原因就是所有節點都探測失敗,但是沒到失效時間(10s),這樣10s內所有訪問都將被返回502(沒有節點可用)
通過設置 fail_timeout=1 讓nginx 在1s后自動刷新節點狀態,也就是只要1s后不報錯的接口是可以正常訪問的,之前默認是要10s,就是一個接口報錯 整個項目10s內都是502!

修改后配置如下:

#負載均衡upstream test_balance {server 172.28.196.xxx:80 max_fails=1 fail_timeout=10 weight=100; #遠端服務server 127.0.0.1:21688 max_fails=1 fail_timeout=10 weight=100;keepalive 256;}

第二:修改proxy.conf 里的 proxy_next_upstream 配置,使后端返回500 狀態不標記為失敗

Nginx 默認判斷失敗節點狀態以connect refuse和time out狀態為準,不以HTTP錯誤狀態進行判斷失敗,因為HTTP只要能返回狀態說明該節點還可以正常連接,所以nginx判斷其還是存活狀態;除非添加了proxy_next_upstream指令設置對404、502、503、504、500和time out等錯誤進行轉到備機處理,在next_upstream過程中,會對fails進行累加,如果備用機處理還是錯誤則直接返回錯誤信息(但404不進行記錄到錯誤數,如果不配置錯誤狀態也不對其進行錯誤狀態記錄),綜述,nginx記錄錯誤數量只記錄timeout 、connect refuse、502、500、503、504這6種狀態,timeout和connect refuse是永遠被記錄錯誤狀態,而502、500、503、504只有在配置proxy_next_upstream后nginx才會記錄這4種HTTP錯誤到fails中,當fails大于等于max_fails時,則該節點失效。

修改后 proxy.conf 配置

proxy_temp_path /www/server/nginx/proxy_temp_dir; proxy_cache_path /www/server/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:20m inactive=1d max_size=5g; client_body_buffer_size 512k; proxy_connect_timeout 60; proxy_read_timeout 60; proxy_send_timeout 60; proxy_buffer_size 32k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; proxy_next_upstream error timeout invalid_header http_503 http_404; proxy_cache cache_one;

修改完后 php 報錯將不再出現502,問題解決

總結

以上是生活随笔為你收集整理的nginx 负载均衡502问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。