nginx长连接与短连接性能对比
上一篇文章搭建了plg日志监控,本次准备看下目前集群的性能。对应机器如下:虚机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 ------> 将要生成的测试结果文件的存放路径
D:/webreport -------> 将要生成的web报告的保存路径
使用物理机cmd命令进行压测。线程为200,持续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;#最大空闲连接数}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; # 设置http版本为1.1proxy_set_header Connection ""; # 设置Connection为长连接(默认为no)}}
进行第二次压测,报告如下
本次压测,rt降低到76ms,tps上升到2400+。对比短连接,集群的性能得到了很大的提升。但错误率指标有所上升。根据jmeter执行日志查看, 报错集中为以下内容
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
根据查阅后发现,这是由于压测机为windows系统,tcp端口资源来不及释放导致。与集群性能无关
长连接与短连接的区别,主要在于长连接模式下,不需要频繁的建立起tcp连接,同时也不需要频繁关闭,节省了这部分资源的消耗。这种情况下比较适合频繁请求的场景下。
nginx长连接与短连接性能对比相关推荐
- nginx做grpc负载均衡时长连接或者短连接
nginx设置响应连接是长连接或者短连接 https://blog.csdn.net/qq_21127151/article/details/106880632 nginx反向代理时保持长连接 htt ...
- nginx设置响应连接是长连接或者短连接
根据需求,需要使用nginx返回长连接和短连接响应. 配置思路 长连接: http {---------------------------keepalive_requests 100000; //这 ...
- TCP的长连接与短连接
转自:https://blog.csdn.net/weixin_39850699/article/details/109903631 1 前言 可能很多 Java 程序员对 TCP 的理解只有一个三次 ...
- 什么是HTTP长连接、短连接
什么是长连接.短连接? 长连接与短连接 所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持. 短连接 ...
- HTTP协议中的长连接和短连接(keep-alive状态)
什么是长连接 长连接还是短连接 相比于短连接,长连接更节省资源.如果每发送一条消息就要创建链路.发起握手认证.关闭链路释放资源,会损耗大量的系统资源.长连接只在首次创建时或者链路断连重连才创建链路,链 ...
- 跨进程通信,到底用长连接还是短连接
一个完整的软件系统大多数情况下是由多个进程共同协作进行的,哪怕它们在同一台服务器上.所以,进程之间如何进行高效的通信至关重要. 单个应用程序+单个数据库这套基础开发套餐我相信每个人都经历过,甚至在初期 ...
- HTTP长连接和短连接以及推送服务原理(转)
HTTP长连接和短连接以及推送服务原理 转自:http://blog.csdn.net/freewaywalker/article/details/50067757 HTTP长连接和短连接1 1. H ...
- java如何实现Socket的长连接和短连接
讨论Socket必讨论长连接和短连接 一.长连接和短连接的概念 1.长连接与短连接的概念:前者是整个通讯过程,客户端和服务端只用一个Socket对象,长期保持Socket的连接:后者是每次请求,都新建 ...
- android socket 长连接_TCP/IP,http,socket,长连接,短连接
点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家 下一篇:这200G的Java实战资料是我师傅当年教 ...
最新文章
- 数据库SQL2000连接测试
- 只开窗不镀锡_平开窗选购时有哪些误区
- ASP.NET Core WebApi 返回统一格式参数
- [YTU]_2475( C++习题 多重继承)
- SAP CRM和C4C message category配置
- 全面认识Docker和基本指令
- 减少Java垃圾收集开销的5条提示
- jsp出现The import Xxx type is not resolved...
- 2020年最快的dns_2020年哪里换旅行证最快取证?需要几天?
- hadoop学习笔记-目录
- ICCV 2019 | 港大提出视频显著物体检测算法MGA,大幅提升分割精度
- mysql json类型存储list_list存储json字符串
- Kubernetes 学习总结(23)—— 2022 年 Kubernetes 的 5 个趋势
- SpringBoot集成WebSocket案例:服务端与客户端消息互通
- 智能一代云平台(三十九):不同服务之间数据调用的一些思考
- 联通光纤猫虚拟服务器设置,联通光纤猫怎么设置 联通光纤猫设置方法【详细步骤】...
- 为什么说10月24日是程序员的节日?
- 2021年电工(初级)考试资料及电工(初级)考试总结
- 思科无线POC测试要包含哪些测试项
- 计组中原码一位乘和原码二位乘方法和注意事项