背景:一般用ab压力测试一个server时,这个Requests per second是一个最关键的指标,如: ab -c 100 -n 1000 http://jackxiang.com/qpsTest.php 这样的格式。也就是说起100个客户端,每个客户端请求1000次,看这个服务器的一个并发输出能力。TPS才是其处理能力。
Requests per second 术语说明:
QPS = req/sec = 请求数/秒
【QPS计算PV和机器的方式】
QPS统计方式 [一般使用 http_load 进行统计]
QPS = 总请求数 / ( 进程总数 * 请求时间 )
QPS: 单个进程每秒请求服务器的成功次数
单台服务器每天PV计算
公式1:每天总PV = QPS * 3600 * 6
公式2:每天总PV = QPS * 3600 * 8
如:QPS=5000,每天有170万的PV,问是否需要进行接口压力测试或是增加服务器吗?
5000*3600*6=108000000 = 1亿多,不用,至于压力测试,有必要,是不是真的能上5000得压测下。
这170W一秒内来了,你也不挂了,得压测一下看接口真的能上5000QPS?
服务器计算
服务器数量 = ceil( 每天总PV / 单台服务器每天总PV )
【峰值QPS和机器计算公式】
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器
问:每天300w PV 的在单台机器上,这台机器需要多少QPS?
答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)
问:如果一台机器的QPS是58,需要几台机器来支持?
答:139 / 58 = 3
http://blog.hummingbird-one.com/?tag=web-%E6%80%A7%E8%83%BD-qps-%E7%AD%89%E5%BE%85%E6%97%B6%E9%97%B4
Mysql的Innodb是有TPS的,要是MyISM的话用下面的脚本:(来自网络)
QPS (Query per second) (每秒查询量)
TPS(Transaction per second) (每秒事务量,如果是InnoDB会显示,没有InnoDB就不会显示)
计算方法
___________________________________________________________
QPS
Questions = SHOW GLOBAL STATUS LIKE 'Questions';
Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
QPS=Questions/Uptime
TPS
Com_commit = SHOW GLOBAL STATUS LIKE 'Com_commit';
Com_rollback = SHOW GLOBAL STATUS LIKE 'Com_rollback';
Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
TPS=(Com_commit + Com_rollback)/Uptime
MySQL的QPS计算
show global status where Variable_name in('com_select','com_insert','com_delete','com_update');
等待10秒
show global status where Variable_name in('com_select','com_insert','com_delete','com_update');
计算差值
MySQL的TPS计算
show global status where Variable_name in('com_insert','com_delete','com_update');
等待10秒
show global status where Variable_name in('com_insert','com_delete','com_update');
计算差值
Requests per second 术语说明:
QPS = req/sec = 请求数/秒
【QPS计算PV和机器的方式】
QPS统计方式 [一般使用 http_load 进行统计]
QPS = 总请求数 / ( 进程总数 * 请求时间 )
QPS: 单个进程每秒请求服务器的成功次数
单台服务器每天PV计算
公式1:每天总PV = QPS * 3600 * 6
公式2:每天总PV = QPS * 3600 * 8
如:QPS=5000,每天有170万的PV,问是否需要进行接口压力测试或是增加服务器吗?
5000*3600*6=108000000 = 1亿多,不用,至于压力测试,有必要,是不是真的能上5000得压测下。
这170W一秒内来了,你也不挂了,得压测一下看接口真的能上5000QPS?
服务器计算
服务器数量 = ceil( 每天总PV / 单台服务器每天总PV )
【峰值QPS和机器计算公式】
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器
问:每天300w PV 的在单台机器上,这台机器需要多少QPS?
答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)
问:如果一台机器的QPS是58,需要几台机器来支持?
答:139 / 58 = 3
http://blog.hummingbird-one.com/?tag=web-%E6%80%A7%E8%83%BD-qps-%E7%AD%89%E5%BE%85%E6%97%B6%E9%97%B4
Mysql的Innodb是有TPS的,要是MyISM的话用下面的脚本:(来自网络)
QPS (Query per second) (每秒查询量)
TPS(Transaction per second) (每秒事务量,如果是InnoDB会显示,没有InnoDB就不会显示)
计算方法
___________________________________________________________
QPS
Questions = SHOW GLOBAL STATUS LIKE 'Questions';
Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
QPS=Questions/Uptime
TPS
Com_commit = SHOW GLOBAL STATUS LIKE 'Com_commit';
Com_rollback = SHOW GLOBAL STATUS LIKE 'Com_rollback';
Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
TPS=(Com_commit + Com_rollback)/Uptime
MySQL的QPS计算
show global status where Variable_name in('com_select','com_insert','com_delete','com_update');
等待10秒
show global status where Variable_name in('com_select','com_insert','com_delete','com_update');
计算差值
MySQL的TPS计算
show global status where Variable_name in('com_insert','com_delete','com_update');
等待10秒
show global status where Variable_name in('com_insert','com_delete','com_update');
计算差值
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/6218/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2017-8-3 23:35
评论列表