注:本文使用的压测工具均基于命令行运行,安装方式请自行百度
压测工具
1. Wrk
这里先介绍下 wrk 工具,它是一款简单的 HTTP 压测工具,它能够在单机多核 CPU 的条件下,使用系统自带的高性能 I/O 机制,通过多线程和事件模式,对目标机器产生大量的负载。
wrk为了提升吞吐能力,使用基于epoll的IO复用模型,可以参考下图(图中实际为select),同时为了减少线程的上下文切换,官方建议thread的数量等同CPU核数,即每一个processor下只运行一个线程,这样来彻底了摆脱了线程切换的消耗。
注意了,在这种模型下,施压端发起请求是阻塞的,它需要等待多个请求一起发送,但是在接收时却是非阻塞的。相比ApacheBench,wrk测试出来的结果更高。
wrk -t 6 -c 30000 -d 60s [测试网址]
-t 后面的6,表示采用6个线程进行测试
-c 后面的30000,表示采用30000个并发连接数进行测试
-d 后面的60s,表示测试时间为60秒
使用示例
wrk -t 6 -c 30000 -d 60s https://www.baidu.com/
2. ApacheBench
ab的原理:ab命令会创建 多个并发 访问线程,模拟 多个访问者 同时对某一 URL地址 进行访问。
它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。
ab是一个命令行工具, ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。
总的来说ab工具小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控。
abs.exe -n 100 -c 20 [测试网址]
-n 后面的100,表示总共发出100 个请求;
-c 后面的20 ,表示采用20 个并发(模拟 20 个人同时访问),
后面的网址表示测试的目标URL。
使用示例
对百度发出100个请求,采用20个并发线程
abs.exe -n 100 -c 20 https://www.baidu.com/
评论区