前段時間,項目這邊需要評估下幾個主要功能點的性能指標,問題其實並不難,但是發現一個很有意思的問題,一些同事居然不太理解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指標來表達。