ab+jenkins非高并发的压测

序言

首先聊一下对于我来说压力测试的目的
压力测试和性能测试不一样,它是指测试系统的内存、CPU、磁盘网络IO在接近超负荷运行时所能承受最大并发量。
当然如果是不追求高并发的情况下,在现在计算机硬件性能大幅度提高的当下,没有什么问题是加一台服务器不能解决的,如果有那就加两台ヽ( ̄▽ ̄)ノ,所以在测试环境做压测是为了发现程序是否有严重的性能问题(比如SQL语句性能很有问题)导致在正常并发下使正常性能的系统出现内存、CPU不足甚至服务器挂掉等问题
反过来说,我做压测的目的是为了验证程序能否承受正常的并发,所以看中的指标有:
1.TPS(吞吐量)
2.响应时间超时的数量/请求次数
3.承受正常的请求数并发时,CPU和内存的占用*

ab命令

  1. 安装Apache,添加 ab命令的环境变量path
  2. 命令行使用ab:
ab -c <并发量> -n <总请求数>  

需要session的网页可以添加:-H "Cookie: cookie1_name=cookie1_value; cookie2_name=cookie2_value"

jenkins使用

下载war格式的包,使用java命令运行,每次启动都用该命令

java -jar jenkins.war

运行完成后,复制控制台输出的口令,打开http://localhost:8080/ ,输入口令,创建用户完成安装

jenkins配置环境变量
1、系统设置中可设置全局变量
2、使用Envject插件 设置 job的局部变量: Properties Content 或Properties File Path(读取配置文件)

ab+jenkins非高并发的压测_第1张图片
实践时的环境变量设置

这里有个坑:在windows中设置path=c:\xx\ ,使用双反斜杠
3、引用环境变量:
系统命令行使用% %, shell 用$ ; python 用os.getenv("环境变量名")

ab+jenkins实践

这里的实践测试的URL是我在自己的VPS(单核CPU和1.5G内存)上部署的网站,方便随时查看系统,同时因为很多地方没优化,能承受的并发很小,所以看出性能问题来。
50的并发,每个网页总共请求300次
网页1:http://www.valkyrie233.com/
网页2:http://www.valkyrie233.com/article
1.环境变量配置:

con=50
req=300
urls=http://www.valkyrie233.com/,http://www.valkyrie233.com/article
cookie=

2.构建执行的shell:

#!python.exe
import os
urls=str(os.getenv('urls')).split(',')
cookie=os.getenv('cookie')
for url in urls:
    shell='ab -c %con% -n %req% '+url
    if cookie!=None:
        shell+='-H '+str(cookie)
    os.system(shell)

3.执行构建

报告分析

1.jenkins打印输出

ab+jenkins非高并发的压测_第2张图片
压测网页1
ab+jenkins非高并发的压测_第3张图片
压测网页2

2.观察系统性能监控,使用htop命令

ab+jenkins非高并发的压测_第4张图片
网页1的性能监控
ab+jenkins非高并发的压测_第5张图片
网页2的性能监控

3、分析问题:
网页1在CPU超负荷但内存还有空余的情况下,TPS过低,请求响应时间过高(超过5S很影响用户体验)
网页2在CPU有空余且内存还有空余的情况下,请求响应时间超级高,TPS也超级低,但网络带宽又有剩余的。
结论:网页1需要优化,网页2性能有严重问题

你可能感兴趣的:(ab+jenkins非高并发的压测)