性能压测报告







业务接口性能压测报告

一、说明

本次压力测试主要是为了找出系统瓶颈,提高单台服务器及整个集群的吞吐量,并根据负载均衡SLB,系统(cpu、mem、io、network、进程及文件限制,内核参数),nginx服务,php服务等进行优化,分别对盘古的四个接口,并通过单节点,nginx代理节点及cluster多节点进行压力测试;并对产生的数据进行汇总(本次数据汇总均为调优后的压测结果)

至于为何使用两种测试工具,因为单台mac主机jmeter无法向集群发出更多请求,所以为了数据的真实性,使用阿里云付费性能压力测试方案。

类别说明
压测工具1、apache-jmeter-5.1.1(单台压测)
2、阿里云性能测试系统(集群压测)
压测接口/api-x/site/user/getUser
/api-x/site/box/currentBox
/api-x/site/user/getShippingAddressList
/api-x/site/user/getCredit
压测性能相关参数协议: https
方法: get
并发数
总请求数
吞吐率(TPS)
响应时间
错误率

二、调优
1、slb
类别参数说明
slb加权最小连接数wlc针对权重轮询,并考虑后端实际连接数负载再轮询
slbslb.s1.small -> slb.s2.medium最大连接(100,000),新建连接数(10,000),查询(10,000)/Sec

2、内核
类别参数说明
kernelvm.nr_hugepages=512内核大页内存
kernelnet.core.somaxconn = 65535端口最大监听队列长度
kernelnet.ipv4.tcp_max_syn_backlogSYN同步包的最大客户端数量
kernelnet.ipv4.tcp_tw_reuse = 1TCP连接重用
kernelnet.ipv4.tcp_tw_recycle = 1TCP连接TIME-WAIT sockets的快速回收
kernelnet.ipv4.tcp_fin_timeout = 30FIN-WAIT-2状态时间

3、nginx
类别参数说明
nginxtengine-2.3.0老版本2.1.2升级
nginxworker_connections 2048 * 4nginx的最大进程数
nginxkeepalive_timeout 90nginx与后端的长链接时间
nginxbacklog 2048nginx backlog

4、php
类别参数说明
php.iniopcache.huge_code_pages=1php opcache的内存分页特性
php.iniopcache.file_cache=/tmpphp opcache的文件缓存
php.inimemory_limit = 2048Mphp的最大内存
php-fpmlisten.backlog=2048php的backlog
php-fpmpm = staticphp进程的运行模式
php-fpmpm.max_children = 240php的最大运行进程数
php-fpmpm.max_requests = 2000php的最大请求数
php-fpmrlimit_files = 10240php的最大文件数


三、盘古单节点压测数据

压测域名均为 pangu 线上域名(host解析),直接压测盘古接口(user --> slb --> 盘古)

  • 压测工具:apache-jmeter-5.1.1
  • 压测系统:macOS MACOS 10.13.6 I7 4G SSD
  • 压测主机:site-f
  • 压测说明
    针对每个接口分别执行并发数及总样本数(800,80000)(900,90000)(1000,100000)进行压力测试,并对产生的每秒TPS,响应时间(min,ave,max)及错误率进行统计
  • 压测结果:单节点可承受每秒1k并发
    在这里插入图片描述

四、盘古单代理节点压测数据

压测域名均为 wwwx线上域名(host解析),通过site端进行反向代理到盘古端进行压测,较盘古单节点压力测试多一层SLB反向代理(user --> slb --> site --> slb --> 盘古)

  • 压测工具:apache-jmeter-5.1.1
  • 压测系统:macOS MACOS 10.13.6 I7 4G SSD
  • 压测主机:site-f
  • 压测说明
    针对每个接口分别执行并发数及总样本数(800,80000)(900,90000)(1000,100000)进行压力测试,并对产生的每秒TPS,响应时间(min,ave,max)及错误率进行统计
  • 压测结果:单节点可承受每秒1k并发

在这里插入图片描述


五、集群压测数据

通过对整个集群两台slb、六台服务器(分别部署site及盘古项目)进行压力测试
user --> slb --> site节点轮询 --> slb --> 盘古节点轮询

说明

  • 压测工具:阿里云性能测试系统
  • 压测系统:无
  • 压测主机:盘古集群
  • 压测接口:/api-x/site/user/getUser
1、每秒2000并发,总计5分钟压测数据

2000并发下的系统cpu使用率
在这里插入图片描述

2000并发下的每台nginx并发连接数
在这里插入图片描述

2000并发下的阿里云压力测试数据汇总
在这里插入图片描述

每秒2000并发的压测数据分析:

异常原因:由于响应时间为10s,所以超过10s的均为错误,异常率为0.8%

类别说明
接口/api-x/site/user/getUser
响应超时10s
吞吐率749.57
并发数2000
总样本数224870
成功率99.89%(224633/227)
异常数237
异常率0.11%


2、每秒3000并发,总计5分钟压测数据

3000并发下的系统cpu使用率
在这里插入图片描述

3000并发下的每台nginx并发连接数
在这里插入图片描述

3000并发下的阿里云压力测试数据汇总
在这里插入图片描述

每秒3000并发的压测数据分析:

异常原因:由于响应时间为10s,所以超过10s的均为错误,异常率为0.8%

类别说明
接口/api-x/site/user/getUser
响应时间2.8s
响应超时10s
吞吐率764.93
并发数3000
总样本数229449
成功率99.20%(227613/1863)
异常数1864
异常率0.8%

六、结论
1、说明

本次压测对index.html、index.php及多个项目接口的单机、代理、多层代理及集群等多种场景的内外网环境进行了压测,由于index页面和内网环境在某些情况下只是理论数据,所以没有进行统计,只是粗略的进行了nginx、php本身的最大负载压测;并对slb、系统内核参数、进程文件限制数、nginx、php等均进行了调优,覆盖了七层,四层场景,排除了潜在的影响系统性能的因素。


2、结果
  • 单台服务器实现并发1000
  • 集群可承载3000并发
  • 业务处理提升7%

3、瓶颈

对于单主机节点压测,并发达到800、900、1000的时候,接口平均响应时间都在5s及以上;并且qps略低

  • /api-x/site/user/getUser:143
  • /api-x/site/box/currentBox:100
  • /api-x/site/user/getShippingAddressList:200
  • /api-x/site/user/getCredit:220

getUser接口当并发达到3000的时候,集群压力会达到瓶颈

  • 后端少部分接口响应时间大于10s,平均响应时间3s(响应时间取决于接口每秒的吞吐量)
  • php 慢日志(暴露出很多大于1s的满日志)
  • rds 数据库连接数会达到上限(readonly-db3)
  • 12
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
JMeter是一种常用的性能测试工具,它可以帮助开发人员评估应用程序或网站在不同负载下的性能表现。对于性能压测,你可以使用JMeter来模拟多个用户同时访问系统,并收集各项指标,如响应时间、吞吐量和错误率等。通过这些指标,你可以评估系统在不同负载条件下的稳定性和性能表现。 为了进行JMeter性能压测,你可以按照以下步骤: 1. 安装JMeter:首先,你需要从官方网站下载并安装JMeter。 2. 创建测试计划:打开JMeter,并创建一个新的测试计划。在测试计划中,你可以添加线程组、定时器、取样器、监听器等组件,以设置并收集所需的压测数据。 3. 配置线程组:在线程组中,你可以设置并发用户数、循环次数、Ramp-Up时间等参数,以模拟真实用户的访问行为。 4. 添加取样器:取样器用于模拟用户发送请求,并收集服务器的响应数据。你可以根据需要选择合适的取样器,如HTTP请求、FTP请求等。 5. 配置监听器:监听器用于收集和显示压测结果。你可以选择适当的监听器,如查看结果树、聚合报告、图形结果等,来监控系统的性能指标。 6. 运行测试计划:在JMeter中,你可以点击“运行”按钮来执行测试计划。在执行过程中,JMeter会模拟多个并发用户发送请求,并记录和分析服务器的响应数据。 7. 分析测试结果:执行完测试计划后,你可以使用JMeter提供的各种报表和图表来分析性能测试结果。这些结果可以帮助你评估系统的性能瓶颈和优化方向。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值