nginx輪詢宕機解決


  nginx應對高並發的手段采用集群方法,如果一個服務域名背后的某個服務器發生了宕機,而此時又恰好輪詢到了該服務器,那么就會發生長時間的等待,直到瀏覽器多次嘗試后輪詢到沒有宕機的服務器才能完成一個服務,大大降低了服務器的效率和用戶體驗度,即相當於宕機的服務器白白占用了幾次輪詢嘗試時間;

  為了解決該問題,案例如下:

    修改nginx.conf文件:

  upstream myserver{ #ip_hash; server 127.0.0.1:8081; server 127.0.0.1:8082; } server{ listen 81; server_name www.bproject.com; location / { root html; proxy_pass http://myserver;
 index index.html index.htm; proxy_connect_timeout 1; proxy_send_timeout 1; proxy_read_timeout 1; } }

      通過一個服務名稱的location里面配置代理響應超時時間,1表示1秒鍾,如果1秒鍾沒有響應,就把請求按照輪詢轉發,加快響應處理的時間。

      proxy_connect_timeout:該指令設置與upstream server的連接超時時間,這個超時時間不能超過75秒;

      proxy_send_timeout:這個指令設置了發送請求給upstream服務器的超時時間。超時設置不是為了整個發送期間,而是在兩次write操作期間。如果超時后,upstream沒有收到新的數據,nginx會關閉連接,默認值為60s;

      proxy_read_timeout:該指令與代理服務器的讀取超時時間。它決定了nginx會等待多長時間來獲得請求的響應,這個時間不是獲得整個response的時間,而是兩次reading操作的時間,默認值為60s;

  測試:

    步驟一:配置兩個Tomcat,兩個端口分別為8081,8082

        

    步驟二:配置nginx.conf文件

        

    步驟三:分別啟動Tomcat和nginx

        啟動Tomcat:這里需要啟動兩次Tomcat,一次端口為8082,一次端口為8081

        進入Tomcat文件下的bin目錄

          

         使用【./startup.sh】 命令啟動  

          

        啟動后可使用【ps -ef | grep tomcat 】命令查看當前Tomcat的進程

          

        啟動nginx:

        進入nginx文件下的sbin目錄

          

        使用【./nginx】命令啟動nginx

          

        使用【ps -ef | grep nginx】命令查看當前nginx進程

           

        實現效果:在配置中配置了兩個服務器,當其中一台服務器宕機之后,就是輪詢到下一台服務器;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM