压力测试

2016-05-24  本文已影响156人  _奔跑的蜗牛_

衡量参数

QPS - Queries Per Second 每秒处理的查询数(如果是数据库,就相当于读取)
TPS - Transactions Per Second 每秒处理的事务数(如果是数据库,就相当于写入、修改)
IOPS,每秒磁盘进行的I/O操作次数
QPS(TPS)= 并发数/平均响应时间

例如对某个数据库测试,分开两次测QPS与TPS。QPS(读取)值总是高于TPS(写、改)。

二八法则:

80%的用户集中在20%时间里访问
假设有500万活跃用户,则每秒的pv(每秒N个请求就是QPS):
((80%500万)/(24小时60分60秒20%)) = 231 pv/s(1台服务器每秒处理请求的数量)

tps = 1400/average time(s) --- 90% line time

tomcat几个参数

maxThreads:Tomcat线程池最多能起的线程数;
maxConnections:Tomcat最多能并发处理的请求(连接);
acceptCount:Tomcat维护最大的对列数;
minSpareThreads:Tomcat初始化的线程池大小或者说Tomcat线程池最少会有这么多线程。
比较容易弄混的是maxThreads和maxConnections这两个参数:

maxThreads是指Tomcat线程池做多能起的线程数,而maxConnections则是Tomcat一瞬间做多能够处理的并发连接数。比如maxThreads=1000,maxConnections=800,假设某一瞬间的并发时1000,那么最终Tomcat的线程数将会是800,即同时处理800个请求,剩余200进入队列“排队”,如果acceptCount=100,那么有100个请求会被拒掉。
注意:根据前面所说,只是并发那一瞬间Tomcat会起800个线程处理请求,但是稳定后,某一瞬间可能只有很少的线程处于RUNNABLE状态,大部分线程是TIMED_WAITING,如果你的应用处理时间够快的话。所以真正决定Tomcat最大可能达到的线程数是maxConnections这个参数和并发数,当并发数超过这个参数则请求会排队,这时响应的快慢就看你的程序性能了。

wrk测试工具:

参数 -t 和 -c 可以控制线程数和并发数(用n个线程模拟m个连接. )
一般线程数不宜过多. 核数的2到4倍足够了. 多了反而因为线程切换过多造成效率降低. 因为 wrk 不是使用每个连接一个线程的模型, 而是通过异步网络 io 提升并发量. 所以网络通信不会阻塞线程执行. 这也是 wrk 可以用很少的线程模拟大量网路连接的原因. 而现在很多性能工具并没有采用这种方式, 而是采用提高线程数来实现高并发. 所以并发量一旦设的很高, 测试机自身压力就很大. 测试效果反而下降.

上一篇下一篇

猜你喜欢

热点阅读