衡量參數(shù)
QPS - Queries Per Second 每秒處理的查詢數(shù)(如果是數(shù)據(jù)庫穷缤,就相當(dāng)于讀取)
TPS - Transactions Per Second 每秒處理的事務(wù)數(shù)(如果是數(shù)據(jù)庫铺韧,就相當(dāng)于寫入钓丰、修改)
IOPS疹蛉,每秒磁盤進(jìn)行的I/O操作次數(shù)
QPS(TPS)= 并發(fā)數(shù)/平均響應(yīng)時間
例如對某個數(shù)據(jù)庫測試磺平,分開兩次測QPS與TPS。QPS(讀任值)值總是高于TPS(寫磁滚、改)。
二八法則:
80%的用戶集中在20%時間里訪問
假設(shè)有500萬活躍用戶宵晚,則每秒的pv(每秒N個請求就是QPS):
((80%500萬)/(24小時60分60秒20%)) = 231 pv/s(1臺服務(wù)器每秒處理請求的數(shù)量)
tps = 1400/average time(s) --- 90% line time
tomcat幾個參數(shù)
maxThreads:Tomcat線程池最多能起的線程數(shù)恨旱;
maxConnections:Tomcat最多能并發(fā)處理的請求(連接);
acceptCount:Tomcat維護(hù)最大的對列數(shù)坝疼;
minSpareThreads:Tomcat初始化的線程池大小或者說Tomcat線程池最少會有這么多線程搜贤。
比較容易弄混的是maxThreads和maxConnections這兩個參數(shù):
maxThreads是指Tomcat線程池做多能起的線程數(shù),而maxConnections則是Tomcat一瞬間做多能夠處理的并發(fā)連接數(shù)钝凶。比如maxThreads=1000仪芒,maxConnections=800唁影,假設(shè)某一瞬間的并發(fā)時1000,那么最終Tomcat的線程數(shù)將會是800掂名,即同時處理800個請求据沈,剩余200進(jìn)入隊列“排隊”,如果acceptCount=100饺蔑,那么有100個請求會被拒掉锌介。
注意:根據(jù)前面所說,只是并發(fā)那一瞬間Tomcat會起800個線程處理請求猾警,但是穩(wěn)定后孔祸,某一瞬間可能只有很少的線程處于RUNNABLE狀態(tài),大部分線程是TIMED_WAITING发皿,如果你的應(yīng)用處理時間夠快的話崔慧。所以真正決定Tomcat最大可能達(dá)到的線程數(shù)是maxConnections這個參數(shù)和并發(fā)數(shù),當(dāng)并發(fā)數(shù)超過這個參數(shù)則請求會排隊穴墅,這時響應(yīng)的快慢就看你的程序性能了惶室。
wrk測試工具:
參數(shù) -t 和 -c 可以控制線程數(shù)和并發(fā)數(shù)(用n個線程模擬m個連接. )
一般線程數(shù)不宜過多. 核數(shù)的2到4倍足夠了. 多了反而因為線程切換過多造成效率降低. 因為 wrk 不是使用每個連接一個線程的模型, 而是通過異步網(wǎng)絡(luò) io 提升并發(fā)量. 所以網(wǎng)絡(luò)通信不會阻塞線程執(zhí)行. 這也是 wrk 可以用很少的線程模擬大量網(wǎng)路連接的原因. 而現(xiàn)在很多性能工具并沒有采用這種方式, 而是采用提高線程數(shù)來實(shí)現(xiàn)高并發(fā). 所以并發(fā)量一旦設(shè)的很高, 測試機(jī)自身壓力就很大. 測試效果反而下降.