吞吐量
吞吐量是什么?一般吞吐量是指系統的抗壓能力,負載能力,代表系統每秒能承受的最大訪問量。一個系統的吞吐量通常由系統的qps(tps)、并發數來決定。這兩個值都有一個相對極限值,只要某一項達到最大,系統的吞吐量就上不去。
QPS
QPS:Queries Per Second(每秒查詢數),就是每秒響應成功的次數(即用戶從客戶端發出請求到服務端響應成功的次數)。
qps = request數量 / s
TPS
TPS: Transactions Per Second(每秒事務處理數),就是從客戶端發出請求,到收到服務端響應成功處理的事務數??蛻舳藦陌l送請求開始倒計時,收到服務端響應結束倒計時,以此來計算使用的時間和處理的事務數。
如果1秒訪問一個頁面,在請求這個頁面接口的中間,這個接口沒有再請求其他的接口,可以認為TPS和QPS是等價的,但是如果在請求這個接口的過程中,這個接口請求了其他接口,也就是請求了多次服務端,比如說一共請求了三次服務端,那QPS就是3,但是TPS 卻是1。
tps = 每秒鐘事務數量
RT
RT:response time(響應時間),指從客戶端發起請求到服務端接收請求并成功返回的時間差,一般取平均響應時間。
并發數
并發數 = QPS * 平均響應時間
QPS = 并發數 / 平均響應時間
性能優化思考
我們參考公式QPS = 并發數 / RT,在單線程情況下,就是QPS = 1 / RT,假如RT是200ms,QPS就是5。那么我們只要提高線程數,就可以提高系統性能。
最佳線程數計算
實際上RT = cpu time(CPU執行時間) + cpu wait_time (CPU等待時間);按照上邊的假如RT是200ms,其中cpu time是100ms,cpu wait_time是100ms;不考慮上下文切換的時間,理論上RT是可以處理2個請求。如果在考慮上CPU多核利用率,
最佳線程數=RT / cpu_time * cpu核數 * cpu利用率。