博客
关于我
Nginx upstream性能优化
阅读量:799 次
发布时间:2023-02-15

本文共 1769 字,大约阅读时间需要 5 分钟。

基于大报文和小报文场景的Nginx压测方案设计

目的

完成基于大报文和小报文场景的Nginx压测方案设计,分析其在长连接和短连接的最佳并发模型测试结果。

介绍

在Nginx的模块体系中,主要分为三种类型:handler、filter和upstream。其中,upstream可视为一种特殊的handler,主要用于与后端服务器(如PHP、JBOSS等)通信。Nginx处理请求采用非阻塞方式,属于流式处理,因此upstream模块的实现较为复杂。

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;}
server块配置
  • address:指定服务器地址,可为域名、IP或UNIX套接字路径。
  • weight:设定服务器权重,默认为1。
  • max_fails:定义通信失败的次数,默认为1。
  • fail_timeout:设定失败统计时间段,默认为10秒。
  • backup:标记备用服务器。
  • down:标记永久不可用服务器,可与ip_hash指令结合使用。

#####默认负载均衡方式为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/

你可能感兴趣的文章
Objective-C实现min_heap最小堆算法(附完整源码)
查看>>
Objective-C实现mobius function莫比乌斯函数算法(附完整源码)
查看>>
Objective-C实现modular Binary Exponentiation模二进制指数算法 (附完整源码)
查看>>
Objective-C实现modular exponential模指数算法(附完整源码)
查看>>
Objective-C实现monte carlo dice蒙特卡洛骰子模拟算法(附完整源码)
查看>>
Objective-C实现monte carlo蒙特卡罗算法(附完整源码)
查看>>
Objective-C实现Mosaic Augmentation马赛克增强算法(附完整源码)
查看>>
Objective-C实现msd 基数排序算法(附完整源码)
查看>>
Objective-C实现MSRCR算法(附完整源码)
查看>>
Objective-C实现multi level feedback queue多级反馈队列算法(附完整源码)
查看>>
Objective-C实现multilayer perceptron classifier多层感知器分类器算法(附完整源码)
查看>>
Objective-C实现multiplesThreeAndFive三或五倍数的算法 (附完整源码)
查看>>
Objective-C实现n body simulationn体模拟算法(附完整源码)
查看>>
Objective-C实现naive string search字符串搜索算法(附完整源码)
查看>>
Objective-C实现natural sort自然排序算法(附完整源码)
查看>>
Objective-C实现nested brackets嵌套括号算法(附完整源码)
查看>>
Objective-C实现nevilles method多项式插值算法(附完整源码)
查看>>
Objective-C实现newton raphson牛顿-拉夫森算法(附完整源码)
查看>>
Objective-C实现newtons second law of motion牛顿第二运动定律算法(附完整源码)
查看>>
Objective-C实现newton_forward_interpolation牛顿前插算法(附完整源码)
查看>>