nginx配置keepalive長(zhǎng)連接的實(shí)現(xiàn)方法
為什么要有keepalive?
因?yàn)槊看谓cp都要建立三次握手,消耗時(shí)間較長(zhǎng),所以為了減少tcp建立連接需要的時(shí)間,就可以設(shè)置keep_alive長(zhǎng)連接。
nginx中keep_alive對(duì)客戶(hù)端的配置
- keepalived_disable 禁用某些瀏覽器
- keepalive_request:在我們的tcp連接中并不是等一個(gè)請(qǐng)求處理完成后再繼續(xù)下一個(gè)請(qǐng)求,而是進(jìn)行異步請(qǐng)求,也就是說(shuō)一個(gè)tcp連接可以進(jìn)行很多個(gè)請(qǐng)求。這個(gè)參數(shù)默認(rèn)1000,已經(jīng)完全夠用了。
- send_request:tcp建立連接后,服務(wù)端在準(zhǔn)備數(shù)據(jù)過(guò)程中的時(shí)間,如果超過(guò)設(shè)定的時(shí)間,則斷開(kāi)連接。
- keepalive_timeout:tcp連接過(guò)程超過(guò)這個(gè)設(shè)定的時(shí)間,則斷開(kāi)連接。
- keepalive_time:tcp連接最長(zhǎng)時(shí)間。(不能讓客戶(hù)端無(wú)限復(fù)用tcp連接)
nginx對(duì)上游后端服務(wù)的keepalive
配置目的:在nginx與上有服務(wù)器連接的時(shí)候,通過(guò)配置keepalive達(dá)到連接復(fù)用,提高傳輸效率。
在upstream服務(wù)器列表中可配置的參數(shù):
keepalive:可支持線(xiàn)程個(gè)數(shù)
keepalive_requests: 每個(gè)線(xiàn)程可以并發(fā)多少TCP連接數(shù)
keepalive_timeout:連接保留時(shí)間
在server中配置的參數(shù):
proxy_http_version:1.1; 設(shè)置http版本,默認(rèn)情況下是http1.0版本像后端服務(wù)發(fā)起請(qǐng)求,1.0發(fā)起每次請(qǐng)求后會(huì)關(guān)閉連接,下次發(fā)起請(qǐng)求后會(huì)再次建立連接,消耗時(shí)間。
proxy_set_header Connection ""; 由nginx向后端服務(wù)器發(fā)送請(qǐng)求時(shí),Connection參數(shù)默認(rèn)是close關(guān)閉狀態(tài),那么就不會(huì)和后端服務(wù)器建立長(zhǎng)連接keepalive,這個(gè)參數(shù)意思是將nginx發(fā)送到后端的header的Connection參數(shù)設(shè)置成空或者設(shè)置成keepalive,那么就支持keepalive長(zhǎng)連接(http1.1默認(rèn)支持長(zhǎng)連接)。
用ab壓力測(cè)試工具對(duì)nginx的keepalive參數(shù)調(diào)優(yōu)前后性能進(jìn)行對(duì)比
安裝ab壓力測(cè)試工具
yum install httpd-tools -y
ab工具直接對(duì)nginx服務(wù)器進(jìn)行壓力測(cè)試
1.先對(duì)后端服務(wù)器直接進(jìn)行壓力測(cè)試
-n:請(qǐng)求數(shù)
-c:并發(fā)數(shù)
ab -n 10000 -c 30 http://192.168.44.120/
Transfer rate:吞吐量速率,每秒下載速率
Requests per second(qps): 每秒并發(fā)量
2.對(duì)nginx代理服務(wù)器進(jìn)行ab壓力測(cè)試(不加keepalive長(zhǎng)連接配置)
可以看到經(jīng)過(guò)nginx代理后,吞吐量和qps并發(fā)量都大幅度下降。這是因?yàn)榻?jīng)過(guò)代理后nginx需要再與后端服務(wù)器進(jìn)行數(shù)據(jù)傳輸,而且沒(méi)有加長(zhǎng)連接配置,所以性能下降。
3.對(duì)nginx代理服務(wù)器進(jìn)行ab壓力測(cè)試(添加keepalive長(zhǎng)連接配置)
添加配置
觀(guān)察效果:
并發(fā)量和吞吐量都有提升,響應(yīng)延遲下降。證明keepalive配置有對(duì)請(qǐng)求效率進(jìn)行有效的優(yōu)化。
用ab壓力測(cè)試工具對(duì)nginx的keepalive參數(shù)調(diào)優(yōu)前后性能進(jìn)行對(duì)比(后端是tomcat)
用ab直連測(cè)試tomcat,性能居中
用ab加nginx(無(wú)keepalive)代理測(cè)試tomcat,性能比直連稍低
用ab加nginx(keepalive)代理測(cè)試tomcat,性能比直連大幅提高
結(jié)論:所以再tomcat前加nginx代理絕對(duì)不僅僅是為了做動(dòng)靜分離和負(fù)載均衡,也是為了keepalive做性能優(yōu)化提升并發(fā)量。
注:
有一些特殊的場(chǎng)景比如客戶(hù)端瀏覽器不支持keepalive,或者只是通過(guò)暴露tomcat接口進(jìn)行訪(fǎng)問(wèn)的形式可以通過(guò)nginx添加代理keepalive進(jìn)行調(diào)優(yōu),一般的瀏覽器是帶有keepalive的,所以一般也不需要通過(guò)nginx去做tomcat的keepalive性能調(diào)優(yōu)
到此這篇關(guān)于nginx配置keepalive長(zhǎng)連接的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)nginx keepalive長(zhǎng)連接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx設(shè)置成服務(wù)并開(kāi)機(jī)自動(dòng)啟動(dòng)的配置
Nginx?是一個(gè)高性能的HTTP和反向代理web服務(wù)器,同時(shí)也提供了IMAP/POP3/SMTP服務(wù),接下來(lái)通過(guò)本文給大家介紹Nginx設(shè)置成服務(wù)并開(kāi)機(jī)自動(dòng)啟動(dòng)的配置,需要的朋友可以參考下2022-01-01詳解nginx?中l(wèi)ocation和?proxy_pass的匹配規(guī)則
location是Nginx中用來(lái)匹配客戶(hù)端請(qǐng)求URI的指令,決定如何處理特定路徑的請(qǐng)求,它定義了請(qǐng)求的路由規(guī)則,后續(xù)的配置(如?proxy_pass)會(huì)應(yīng)用在匹配的請(qǐng)求上,這篇文章主要介紹了nginxlocation和proxy_pass的匹配規(guī)則,需要的朋友可以參考下2025-04-04詳解Nginx中的Rewrite的重定向配置與實(shí)踐
這篇文章主要介紹了詳解Nginx中的Rewrite的重定向配置與實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03nginx代理后端路徑獲取IP為127.0.0.1問(wèn)題
文章討論了在使用Nginx作為反向代理時(shí),如何正確配置以避免在前端路徑A/api訪(fǎng)問(wèn)后端時(shí)丟失真實(shí)的IP地址,通過(guò)有效的Nginx配置,可以確保在前后端分離的場(chǎng)景中,客戶(hù)端通過(guò)前端路徑訪(fǎng)問(wèn)后端時(shí),后端能夠正確獲取客戶(hù)端的真實(shí)IP地址,示例配置展示了如何實(shí)現(xiàn)這一目標(biāo)2025-02-02Nginx啟動(dòng)顯示80端口占用問(wèn)題的解決方案
這篇文章主要介紹了Nginx啟動(dòng)顯示80端口占用問(wèn)題的解決方案,文中通過(guò)代碼示例和圖文講解的非常詳細(xì),對(duì)大家解決問(wèn)題有一定的幫助,需要的朋友可以參考下2024-04-04