美文网首页
压力测试

压力测试

作者: _奔跑的蜗牛_ | 来源:发表于2016-05-24 10:30 被阅读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 可以用很少的线程模拟大量网路连接的原因. 而现在很多性能工具并没有采用这种方式, 而是采用提高线程数来实现高并发. 所以并发量一旦设的很高, 测试机自身压力就很大. 测试效果反而下降.

    相关文章

      网友评论

          本文标题:压力测试

          本文链接:https://www.haomeiwen.com/subject/irlzrttx.html