nginx配置keepalive長連接的實現方法
為什么要有keepalive?
因為每次建立tcp都要建立三次握手,消耗時間較長,所以為了減少tcp建立連接需要的時間,就可以設置keep_alive長連接。
nginx中keep_alive對客戶端的配置
- keepalived_disable 禁用某些瀏覽器
- keepalive_request:在我們的tcp連接中并不是等一個請求處理完成后再繼續(xù)下一個請求,而是進行異步請求,也就是說一個tcp連接可以進行很多個請求。這個參數默認1000,已經完全夠用了。
- send_request:tcp建立連接后,服務端在準備數據過程中的時間,如果超過設定的時間,則斷開連接。
- keepalive_timeout:tcp連接過程超過這個設定的時間,則斷開連接。
- keepalive_time:tcp連接最長時間。(不能讓客戶端無限復用tcp連接)
nginx對上游后端服務的keepalive
配置目的:在nginx與上有服務器連接的時候,通過配置keepalive達到連接復用,提高傳輸效率。
在upstream服務器列表中可配置的參數:
keepalive:可支持線程個數
keepalive_requests: 每個線程可以并發(fā)多少TCP連接數
keepalive_timeout:連接保留時間
在server中配置的參數:
proxy_http_version:1.1; 設置http版本,默認情況下是http1.0版本像后端服務發(fā)起請求,1.0發(fā)起每次請求后會關閉連接,下次發(fā)起請求后會再次建立連接,消耗時間。
proxy_set_header Connection ""; 由nginx向后端服務器發(fā)送請求時,Connection參數默認是close關閉狀態(tài),那么就不會和后端服務器建立長連接keepalive,這個參數意思是將nginx發(fā)送到后端的header的Connection參數設置成空或者設置成keepalive,那么就支持keepalive長連接(http1.1默認支持長連接)。
用ab壓力測試工具對nginx的keepalive參數調優(yōu)前后性能進行對比
安裝ab壓力測試工具
yum install httpd-tools -y
ab工具直接對nginx服務器進行壓力測試
1.先對后端服務器直接進行壓力測試
-n:請求數
-c:并發(fā)數
ab -n 10000 -c 30 http://192.168.44.120/
Transfer rate:吞吐量速率,每秒下載速率
Requests per second(qps): 每秒并發(fā)量
2.對nginx代理服務器進行ab壓力測試(不加keepalive長連接配置)
可以看到經過nginx代理后,吞吐量和qps并發(fā)量都大幅度下降。這是因為經過代理后nginx需要再與后端服務器進行數據傳輸,而且沒有加長連接配置,所以性能下降。
3.對nginx代理服務器進行ab壓力測試(添加keepalive長連接配置)
添加配置
觀察效果:
并發(fā)量和吞吐量都有提升,響應延遲下降。證明keepalive配置有對請求效率進行有效的優(yōu)化。
用ab壓力測試工具對nginx的keepalive參數調優(yōu)前后性能進行對比(后端是tomcat)
用ab直連測試tomcat,性能居中
用ab加nginx(無keepalive)代理測試tomcat,性能比直連稍低
用ab加nginx(keepalive)代理測試tomcat,性能比直連大幅提高
結論:所以再tomcat前加nginx代理絕對不僅僅是為了做動靜分離和負載均衡,也是為了keepalive做性能優(yōu)化提升并發(fā)量。
注:
有一些特殊的場景比如客戶端瀏覽器不支持keepalive,或者只是通過暴露tomcat接口進行訪問的形式可以通過nginx添加代理keepalive進行調優(yōu),一般的瀏覽器是帶有keepalive的,所以一般也不需要通過nginx去做tomcat的keepalive性能調優(yōu)
到此這篇關于nginx配置keepalive長連接的實現方法的文章就介紹到這了,更多相關nginx keepalive長連接內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解nginx?中l(wèi)ocation和?proxy_pass的匹配規(guī)則
location是Nginx中用來匹配客戶端請求URI的指令,決定如何處理特定路徑的請求,它定義了請求的路由規(guī)則,后續(xù)的配置(如?proxy_pass)會應用在匹配的請求上,這篇文章主要介紹了nginxlocation和proxy_pass的匹配規(guī)則,需要的朋友可以參考下2025-04-04