本文共 1769 字,大约阅读时间需要 5 分钟。
完成基于大报文和小报文场景的Nginx压测方案设计,分析其在长连接和短连接的最佳并发模型测试结果。
在Nginx的模块体系中,主要分为三种类型:handler、filter和upstream。其中,upstream可视为一种特殊的handler,主要用于与后端服务器(如PHP、JBOSS等)通信。Nginx处理请求采用非阻塞方式,属于流式处理,因此upstream模块的实现较为复杂。
Keep-Alive(长连接)
Keep-Alive指令允许客户端与服务器保持连接不断开。当客户端发起后续请求时,复用已有的连接,减少重新建立连接的开销。Nginx长连接配置示例如下:upstream backend-others { server 10.123.73.242:81 max_fails=0 fail_timeout=10s; server 10.123.73.244:81 max_fails=0 fail_timeout=10s; server 10.123.73.245:81 max_fails=0 fail_timeout=10s; server 10.123.73.246:81 max_fails=0 fail_timeout=10s; server 10.123.73.248:81 max_fails=0 fail_timeout=10s; server 10.123.73.249:81 max_fails=0 fail_timeout=10s; server 10.123.73.247:81 max_fails=0 fail_timeout=10s; keepalive 20000;}location / { proxy_connect_timeout 75; proxy_read_timeout 300; proxy_send_timeout 300; proxy_buffer_size 64k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_pass http://backend-others;} #####默认负载均衡方式为RR轮询
Tomcat和Nginx的配置参数对比:
| 服务器类型 | 配置文件位置 | 参数名称 | 默认值 |
|---|---|---|---|
| Tomcat | Server.xml | maxKeepAliveRequests | 100 |
| Nginx | Server模块 | keepalive_requests | 100 |
建议根据实际需求调整参数值,例如Nginx的keepalive_requests配置为20000,而Tomcat的maxKeepAliveRequests官方建议最大值为200。
| 业务场景 | Nginx到后端 | 并发量 | QPS | CPU(%) | 带宽(M) | PPS |
|---|---|---|---|---|---|---|
| 大报文 | 短连接 | 800 | 1855 | 61.31% | 763.48 | 142425.46 |
| 大报文 | 长连接 | 800 | 2162 | 66.74% | 881.56 | 133334.1 |
| 小报文 | 短连接 | 800 | 5678 | 43.35% | 117.64 | 104862.72 |
| 小报文 | 长连接 | 800 | 11808 | 60.55% | 226.45 | 151743.24 |
从测试数据可见,小报文在长连接场景下QPS提升明显,短连接的提升空间较小。
转载地址:http://rocfk.baihongyu.com/