博客
关于我
Nginx upstream性能优化
阅读量:789 次
发布时间: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/

你可能感兴趣的文章
Navicat for MySQL 查看BLOB字段内容
查看>>
Navicat for MySQL(Ubuntu)过期解决方法
查看>>
Navicat Premium 12 卸载和注册表的删除
查看>>
Navicat 导入sql文件
查看>>
navicat 添加外键1215错误
查看>>
navicat 系列软件一点击菜单栏就闪退
查看>>
Navicat 设置时间默认值(当前最新时间)
查看>>
navicat 连接远程mysql
查看>>
navicat:2013-Lost connection to MySQL server at ‘reading initial communication packet解决方法
查看>>
Navicate for mysql 数据库设计-数据库分析
查看>>
Navicat下载和破解以及使用
查看>>
Navicat中怎样将SQLServer的表复制到MySql中
查看>>
navicat创建连接 2002-can‘t connect to server on localhost(10061)且mysql服务已启动问题
查看>>
Navicat可视化界面导入SQL文件生成数据库表
查看>>
Navicat向sqlserver中插入数据时提示:当 IDENTITY_INSERT 设置为 OFF 时,不能向表中的标识列插入显式值
查看>>
Navicat因导入的sql文件中时间数据类型有参数而报错的原因(例:datetime(3))
查看>>
Navicat如何连接MySQL
查看>>
navicat导入.sql文件出错2006- MySQLserver has gone away
查看>>
navicat怎么导出和导入数据表
查看>>
Navicat通过存储过程批量插入mysql数据
查看>>