前段时间,项目这边需要评估下几个主要功能点的性能指标,问题其实并不难,但是发现一个很有意思的问题,一些同事居然不太理解TPS到底是个什么概念,往往和QPS分不清……
在这里给大家重申一下,
QPS = Query Per Second / Request Per Second
每秒查询次数 / 每秒请求次数 ,一般用于系统中“读请求/读操作”的性能评估指标。
这里不提事务,因为只读查询一般我们不加事务或者只使用数据库的只读事务。
举例说明,我们浏览电商平台的产品详情页的时候,就是一次“读请求/读操作”。
TPS = Transaction Per Second
每秒交易次数 / 每秒事务处理次数 ,一般用于系统中“写请求/写操作”的性能评估指标。
举例说明,我们在电商平台下订单,系统成功处理后,就是一次“写请求/写操作”。
关于如何做性能指标的监控,市场上有一些免费开源的工具可用。
我这边建议大家能手动测就手动测,因为压测工具也存在机器性能上的损耗造成的误差。
测试方法就是通过手动来抓取以下的数据库指标,来计算单位时间内的系统调用数据库的执行次数。
基于MySQL数据库,发几个实用的指标供大家参考,有条件者请牢记:
com_commit = show global status like 'com_commit';
com_rollback = show global status like 'com_rollback';
com_select = show global status like 'com_select';
com_insert = show global status like 'com_insert';
com_delete = show global status like 'com_delete';
com_update = show global status like 'com_update';
uptime = show global status like 'uptime';
TPS=(com_commit + com_rollback + com_select + com_insert + com_delete + com_update)/uptime
一般,我们会根据业务需要,对不同功能点进行压测,一般来说,读请求看QPS,写请求看TPS
。
在我看来,准确的评估一个系统吞吐量,一般以TPS指标为准,但是,如果问一个系统支持多少并发,那么我们也可以用QPS指标来表达。