qps:即queries per second的縮寫,每秒能處理查詢數目。是一台伺服器每秒能夠相應的查詢次數,是對乙個特定的查詢伺服器在規定時間內所處理流量多少的衡量標準。
tps:即transactions per second的縮寫,每秒處理的事務數目。乙個事務是指乙個客戶機向伺服器傳送請求然後伺服器做出反應的過程。客戶機在傳送請求時開始計時,收到伺服器響應後結束計時,以此來計算使用的時間和完成的事務個數,最終利用這些資訊作出的評估分。
rps: 即requests per second的縮寫,每秒能處理的請求數目。等效於qps
吞吐量: 每秒的響應請求數,也即是最大吞吐能力
計算關係:
qps = 併發量 / 平均響應時間
併發量 = qps * 平均響應時間
舉例:根據以上計算關係,我們來預估下單日訪問量在 1000w 需要多大的qps來支援:
通常情況下,80% 的訪問量集中在 20%的時間,算一下這 1000w pv實際需要機器達到多少qps才能滿足,
qps = (1000w * 0.8) / (24 * 3600 * 0.2)
qps = 462.9
jedispool資源池優化建議:
1、maxtotal:最大連線數
以乙個例子說明,假設:
一次命令時間(borrow|return resource + jedis執行命令(含網路) )的平均耗時約為1ms,乙個連線的qps大約是1000
業務期望的qps是50000
那麼理論上需要的資源池大小是50000 / 1000 = 50個。但事實上這是個理論值,還要考慮到要比理論值預留一些資源,通常來講maxtotal可以比理論值大一些。
但這個值不是越大越好,一方面連線太多占用客戶端和服務端資源,另一方面對於redis這種高qps的伺服器,乙個大命令的阻塞即使設定再大資源池仍然會無濟於事。
資源池大小:tps / 平均響應時間
2、maxidle minidle
maxidle實際上才是業務需要的最大連線數,maxtotal是為了給出餘量,所以maxidle不要設定過小,否則會有new jedis(新連線)開銷,而minidle是為了控制空閒資源監測。
連線池的最佳效能是maxtotal = maxidle ,這樣就避免連線池伸縮帶來的效能干擾。但是如果併發量不大或者maxtotal設定過高,會導致不必要的連線資源浪費。
可以根據實際總ops和呼叫redis客戶端的規模整體評估每個節點所使用的連線池
sizeof,你知道多少
今天去參加面試,筆試的第一道題就是這個sizeof的用法,考了六七個,平時覺得很熟,真拿來考到迷糊了。有必要再總結一下。題是這樣的 在32位作業系統環境下,請問以下sizeof的值各是多少。一 int p 10 sizeof p 這個就簡單,int型變數p佔4個位元組,答案就是4.二 char p ...
Java Enum,你知道多少?
引用的列舉型別 public enum state 遍歷 for state s state.values 可以使用switch 列舉變數把列舉值作為case條件。enumsetstateset enumset.allof state.class for state s stateset enumm...
LayoutParams 你知道多少?
從概念講起 layoutparams,顧名思義,就是布局引數。而且大多數人對此都是司空見慣,我們 xml 檔案裡面的每乙個 view 都會接觸到 layout 這樣的屬性,這實際上就是對布局引數的描述。大概大家也就清楚了,layout 這樣開頭的東西都不屬於 view,而是控制具體顯示在 layou...