apipost 简单的性能压测总结
2)数据库配置文件写了占了2G+内存(my.cnf文件),redis+syslog+nginx 最好2G内存-实际大概1G ,消息队列1G内存,Java系统推荐2~4G,所以8G内跑差不多1千;1)jdk默认256M给100用,推荐给1000+人同时用JVM 堆栈建议2G~4G(目前定了机型4核8G内存2T磁盘做radio0存储);3)16G内存能够很好的跑1千+,最好适当调整mysql、ngin
1、简单的使用机型牌评估
1)jdk默认256M给100用,推荐给1000+人同时用JVM 堆栈建议2G~4G(目前定了机型4核8G内存 2T磁盘做radio0存储);
2)数据库配置文件写了占了2G+内存(my.cnf文件),redis+syslog+nginx 最好2G内存-实际大概1G ,消息队列1G内存,Java系统推荐2~4G,所以8G内跑差不多1千;
3)16G内存能够很好的跑1千+,最好适当调整mysql、nginx(跟cpu主要相关)、程序的jvm堆栈大小
4)4G跑测试没啥事,给500人用,最好适当调低mysql于程序的jvm堆栈大小
2、用apipost简单压测项目
1)nginx一如既往的稳定由于前台大小不同,并发可达到:6000~10000
未做优化的nginx,走默认配置;nginx优化特别吃cpu,有视频、大文件、较多socket开始吃内存(也就是流文件)
2)后台接口测试:
1、软件平台预估:1000人同时使用
2、未用专门的cockpit 软件监测 centos/rocky 服务器,用简单的top 和free -h查看服务器资源已基本最大值
评估并发2000得:除了按照若依配置那个tomcat等待线程池子;或者独立数据库和redis;或者cpu 和内存*2才能达到
3、专业还是得用jmater集成测试:
1、新建登录和核心业务相关接口
2、将他们规程一条测试线路
3、进行集成测试
4、排查性能瓶颈并优化核心业务
5、再次进行性能压测;
简单使用可参考
4、压测图片如下
apipost可以离线使用,我就不发安装包了,百度就能下载到,这个工具只能做单接口压测(在接口旁边就有个一键压测),专业的还是得jmater;
简单并发评估,给1000人同时使用:在线操作率3/4~200%,错误率应保证0.5%以下,没错误才是最好的;
注:压测试的服务器cpu 尽量不出现超频(cpu超过100%),内存使用率不超过95%;若超了属于危险指标,建议加配置(理论顺便优化系统性能瓶颈,更佳);
4、测试指标
1)核心业务测试指标:
1000人使用:在线操作率3/4~200%,错误率应保证0.5%以下,没错误才是最好的;
2)非核心业务测认识指标:
1000人使用:在线操作率0.2%~20%,性能达到5%~20%即可,错误率应保证5%以下,没错误才是最好的;
3)数量指标
各系统:
页面:提供重要功能2~5个页面,非核心页面:提供几个;由于页面有需要验证token,应该去掉页面token拦截器,然后进行压测;
接口:提供核心接口3~8个:非核心接口提供几个;压测可去掉权限验证,进行压测;
5、后续突然产品抽,说早上5万人用不卡
稳定点
1)4核8G(应用、数据库、redis、nginx1台):5000人在线用,1000同时用,优化可以1万人在线,1000人用;
2)8核16G (应用、数据库、redis、nginx1台):10000人在线用,2000同时用,优化可以2万人在线;在根据若依微调配置:
3)5万人在线,5000人同时用:推荐 2台 8核16G(网卡万兆-6类网线,此时受限的不是机器而是网卡),数据库,redis 1台,应用和nginx放1台,此时我需根据机器定制优化nginx的配置、redis的配置、spring-session的管理方式、程序配置参考若依,部分接口还得加队列解耦,此时改造已大概能支撑10万以及的集群(此时成本是最高的,需要2周去优化性能瓶颈);
6、后面找了一台不是固态的可能网卡还有点问题的
因为压测、监控时 磁盘和网络都上不去
目前测试情况项目
1)63-压测2分钟 200/qps,配置 机械盘 24核16Gcpu至强2.2Khz;
2)62压测2分钟 450/qps 固态盘 4核4G intel i3 主频3.3khz;
63 程序可能瓶颈压测:
1、登录性能瓶调用签名算法并写入库-关闭此功能 63 达到 390/qps
2、保存和更新日志签名采用一个数据库操作也调用签名,并发:370/qps,明显是数据库写达到瓶颈;
3、只修改数据库连接池至由50改为 200,并发为 270/qps
以下包含连接池变动(下面测试也发生了网路波动,原310变为了265,也证明网络也是性能瓶颈)
4、logback日志级别改为warn,即syslog和request日志级别改为warn 并发为:310/qps or 265/qps
以下包含连接池变动、和降低日志级别
5、不生成运行临时文件,指向黑洞路径 > /dev/null 2>&1 性能为 280/qps
6、后台运行 nohup & 性能为 283/qps
7、增大mysql可支持线程数(解除mysql线程限制,之前为4核8G,现在24核) 418/qps
8、假设优化签名方式(签名、验签不包含主键,且加大压测线程数)412/qps
结论:1)磁盘换固态写性能大大提高,2)cpu线程多,可给mysql多分配线程
3)程序配置数据线程池有定作用,部署不做集群,且cpu线程多 可适当调大
4)应用优化有一定作用
压测后续:
我偷偷又压测几种情况
此时程序优化的较为优化了,压测线程数1000:430/qps
数据库独立,机械盘(59数据库),同样增大数据库线程数据:386/qps ,结论->机械写应该就是瓶颈了
那就换62的固态盘调用,因为有明显性能提升,压测性能为:1023/qps ,继续加大压测线程数据:1171/qps
但是还是没到我的理想,我记得jdk 要是不是很好的兼容,可能并发有问题,那就换 adpot :1149/qps 和 oracle:1039/qps
此时确认不是机器不兼容jdk的事
此时确认不是机器不兼容jdk的事,受限的是mysql,附录图片,mysql并发与机器配置关系 (教程的最后面)
更多推荐
所有评论(0)