nginx長連接與短連接性能對比分析
?nginx長連接與短連接性能對比
本次準備看下目前集群的性能。
- 對應(yīng)機器如下:虛機4,前一后三,4臺配置均為4核4g
- 物理機為20核32g臺式機。
?先進行原始nginx配置的壓測
nginx配置如下:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
#配置nginx json格式日志
log_format main '{"@timestamp": "$time_local", '
'"remote_addr": "$remote_addr", '
'"referer": "$http_referer", '
'"request": "$request", '
'"status": $status, '
'"bytes": $body_bytes_sent, '
'"agent": "$http_user_agent", '
'"x_forwarded": "$http_x_forwarded_for", '
'"up_addr": "$upstream_addr",'
'"up_host": "$upstream_http_host",'
'"up_resp_time": "$upstream_response_time",'
'"request_time": "$request_time"'
' }';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
upstream test.miaohr.com {
server 192.168.175.128:8070;
server 192.168.175.129:8070;
server 192.168.175.130:8070;
}
server {
listen 80;
server_name test.miaohr.com;
charset utf-8;
location / {
root html;
index index.html index.htm;
proxy_pass http://test.miaohr.com;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
}
}
}
使用jmeter5.0進行壓測,壓測命令如下
jmeter -n -t D:/testYc.jmx -l D:/result.txt -e -o D:/webreport
其中:
- D:/testYc.jmx ------> 測試計劃文件的路徑
- D:/result.txt ------> 將要生成的測試結(jié)果文件的存放路徑
- D:/webreport -------> 將要生成的web報告的保存路徑
使用物理機cmd命令進行壓測
線程為200,持續(xù)100s,報告如下:

此時rt為180ms+,tps在980左右
修改nginx配置為長連接
長連接配置如下:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
#配置nginx json格式日志
log_format main '{"@timestamp": "$time_local", '
'"remote_addr": "$remote_addr", '
'"referer": "$http_referer", '
'"request": "$request", '
'"status": $status, '
'"bytes": $body_bytes_sent, '
'"agent": "$http_user_agent", '
'"x_forwarded": "$http_x_forwarded_for", '
'"up_addr": "$upstream_addr",'
'"up_host": "$upstream_http_host",'
'"up_resp_time": "$upstream_response_time",'
'"request_time": "$request_time"'
' }';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
upstream test.miaohr.com {
server 192.168.175.128:8070;
server 192.168.175.129:8070;
server 192.168.175.130:8070;
keepalive 500;#最大空閑連接數(shù)
}
server {
listen 80;
server_name test.miaohr.com;
charset utf-8;
location / {
root html;
index index.html index.htm;
proxy_pass http://test.miaohr.com;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
}
}
location / {
proxy_pass http://test-api;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1; # 設(shè)置http版本為1.1
proxy_set_header Connection ""; # 設(shè)置Connection為長連接(默認為no)
}
}
進行第二次壓測,報告如下:

本次壓測,rt降低到76ms,tps上升到2400+。對比短連接,集群的性能得到了很大的提升。但錯誤率指標有所上升。根據(jù)jmeter執(zhí)行日志查看, 報錯集中為以下內(nèi)容
1650551535574,485,HTTP請求,Non HTTP response code: java.net.BindException,Non HTTP response message: Address already in use: connect,線程組 1-135,text,false,,2437,0,200,200,http://192.168.175.131/getSxbm,0,0,485
根據(jù)查閱后發(fā)現(xiàn),這是由于壓測機為windows系統(tǒng),tcp端口資源來不及釋放導致。與集群性能無關(guān)

長連接與短連接的區(qū)別
主要在于長連接模式下,不需要頻繁的建立起tcp連接,同時也不需要頻繁關(guān)閉,節(jié)省了這部分資源的消耗。這種情況下比較適合頻繁請求的場景下。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
nginx中的proxy_set_header參數(shù)指令詳解
本文介紹了Nginx中的proxy_set_header指令,用于自定義代理請求的HTTP頭部信息,實現(xiàn)更靈活的反向代理功能,提供了實際應(yīng)用場景和配置示例,幫助讀者更好地理解和使用proxy_set_header指令,感興趣的朋友一起看看吧2025-03-03
Nginx設(shè)置HttpOnly Secure SameSite參數(shù)解決Cookie信息丟失
本文主要介紹了Nginx中Cookie缺少SameSite屬性的問題,并詳細解釋了HttpOnly、Secure和SameSite屬性的作用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-11-11
淺談Nginx10m+高并發(fā)內(nèi)核優(yōu)化詳解
這篇文章主要介紹了淺談Nginx10m+高并發(fā)內(nèi)核優(yōu)化詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03

