Stress-ng 压力测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Stress-ng 压力测试相关的知识,希望对你有一定的参考价值。

参考技术A 1、源码位置
https://github.com/ColinIanKing/stress-ng
2、参数和用法
-c 2 : 生成2个worker循环调用sqrt()产生cpu压力
-i 1 : 生成1个worker循环调用sync()产生io压力
-m 1 : 生成1个worker循环调用malloc()/free()产生内存压力
-c N :运行N worker CPU压力测试进程
--cpu-method all :worker从迭代使用30多种不同的压力算法,包括pi, crc16, fft等等
-tastset N:将压力加到指定核心上
-d N:运行N worker HDD write/unlink测试
-i N:运行N worker IO测试

比如, 从下面可以看出经过30秒的压力后,系统负载从0.00提升至0.57。

产生2个worker做圆周率算法压力:

产生2个worker从迭代使用30多种不同的压力算法,包括pi, crc16, fft等等。

产生2个worker调用socket相关函数产生压力

产生2个worker读取tsc产生压力

除了能够产生不同类型的压力,strss-ng还可以将压力指定到特定的cpu上,比如下面的命令将压力指定到cpu 0,2,3,6:

web压力测试 要测试哪些方面

web压力测试通过产生真实压力来发现问题需要关注以下方面:
1、对要测试的系统进行分析,明确需要对哪一块做压力测试。比如:淘宝网站双十一期间,秒杀跟支付,此模式用户操作中占比比较大
再比如:游戏,登录--开始战斗--结束战斗这种混合模式在用户操作中占比较大
那么就可以针对这种占比比较大的模式进行压力测试
2、明确了要测试的点后,如何对这些测试点进行施压呢?
第一种方式可以通过写脚本产生压力机器人对服务器进行发包收包操作;
第二种方式就是借助一些压力测试工具如:JMeter或LoadRunner
3、如何对这些测试点进行正确的施压呢?
那么就需要用压力测试工具或者其它方法来录制脚本,模拟用户的操作
4、对测试点该施加多大的压力比较合适?该施加多少的数据才能找出系统的瓶颈?
那么就需要明确压力测试所限制的数量,即用户并发量,这里分3种情况来明确:
1)根据上级的明确规定数量,来设定最确大值,然后根据情况往上或往下增减
2)上级未规定,由自己判断,从1开始慢慢递增。如:1,5,10,20等等
3)若做过压力测试,则可以根据上次的压力测试结果为基数进行测试
5、测试完之后,如何通过这些数据来定位性能问题呢?
虽然通过这些测试结果我们可以得到TPS(吞吐量),平均响应时间等这些数据,可判断出服务器是否存在问题,但却不能定位问题。
参考技术A Be swift to hear 参考技术B

以前有过类似的问题 可以参考下:

https://www.zhihu.com/question/19867883

以上是关于Stress-ng 压力测试的主要内容,如果未能解决你的问题,请参考以下文章

压力测试、负载测试和并发测试有啥区别?

如何使用Apache提供ab压力测试工具进行压力测试

利用jmeter进行压力测试

网页压力测试工具

ab(Apache Bench)压力测试工具

如何做压力测试