面試官:知道你的接口QPS是多少麼?(轉)

面試官:知道你的接口QPS是多少麼?

 

引言

你們好,我是渣渣煙。面試

我又來水文章了。這篇文章我我的感受含金量不是太大,大概5分鐘左右就能看完!其實你們都知道,我不愛寫這種操做型的文章,一頓截圖寫幾個命令就搞定了,含金量不高。tomcat

然而,近期有一段聊天記錄以下服務器

看到這裏,不要吃驚,不要驚訝!mvc

那個很猥瑣的,沒有打碼的頭像,正是渣渣煙本人(此處應有反駁的聲音,那個頭像哪裏猥瑣了,分明帥氣逼人好麼)!app

因此,牛皮都吹出去了。寫個文章,本身給本身圓上!負載均衡

正文

QPS是什麼

咱們先回憶一下,QPS的概念以下所示:ui

QPS(Query Per Second):每秒請求數,就是說服務器在一秒的時間內處理了多少個請求。spa

那咱們怎麼估出每秒鐘能處理多少請求呢?
OK,用日誌來估計!那日誌怎麼記錄呢,細分下來,有兩種方式。
方式一:本身在接口裏記錄
這種方式指的是在你的接口裏,日誌記錄了能體現該接口特性的,並具備惟一性的字符串!
例如,下面這一段代碼日誌

@RestController  
@RequestMapping("/home")  
public class IndexController {
    //省略
    @RequestMapping("/index")  
    String index() {  
        logger.info("渣渣煙");
        return "index";  
    }  
}  

假設如今我要統計index這個接口的QPS!
OK,什麼叫能體現該接口特性的字符串呢!就像上面的"渣渣煙"這個字符串,只在index這個接口裏出現過,沒在其餘其餘接口裏出現過!所以,只要統計出"渣渣煙"這個字符串在日誌裏的出現次數,就能知道該接口的請求次數!code

什麼叫具備惟一性的字符串呢!所謂惟一性,指的是"渣渣煙"這個字符串,在這個接口的一次調用流程中,只出現一次!若是出現兩次,就會致使到時候統計出來的次數會多一倍,因此儘可能選擇具備惟一性的字段!

方式二:利用tomcat的access log
若是你的日誌裏沒有我上面提到的字段。OK,那就用tomcat自帶的access log功能吧!
由於我平時內置的tomcat比較多,指定下面兩個屬性便可

server.tomcat.accesslog.directory
設定log的目錄,默認: logs
server.tomcat.accesslog.enabled
是否開啓access log,默認: false

此時,你訪問一次/home/index地址,會有下面這樣日誌

127.0.0.1 - - [19/Aug/2019:23:55:27 +0800] "POST /home/index HTTP/1.1" 200 138

那麼,你就能夠根據日誌中,該記錄的出現次數,統計index接口的QPS。

實戰

假設,你這會日誌已經拿到手了,名字爲xxx.log。
假設日誌內容以下

//省略,都長差很少,貼其中一條就行
0:0:0:0:0:0:0:1 - - [27/Dec/2018:20:41:57 +0800] "GET /mvc2/upload.do HTTP/1.1" 404 949 http-bio-8080-exec-5 43
//省略

這個時候,你執行一串命令長下面這樣的,進行統計就行!
cat xx.log |grep 'GET /mvc2'|cut -d ' ' -f4|uniq -c|sort -n -r
出來等結果就是

2 [27/Dec/2018:20:40:44
1 [27/Dec/2018:20:47:58
1 [27/Dec/2018:20:47:42
1 [27/Dec/2018:20:41:57

而後你就知道,原來在20:40:44 分。。這個接口的QPS最高,達到了驚人的2QPS!

如今,來說一下命令什麼意思!
cat xxx.log:讀文件內容
grep 'GET /mvc2':將文件內容按照GET /mvc2進行過濾
cut -d ' ' -f4:過濾出來的內容按照空格進行分割,取第四列內容
uniq -c:每列旁邊顯示該行重複出現的次數
sort -n -r:依照數值的大小排序

那麼,若是是其餘日誌格式,無外乎cut語句的處理不一樣而已,道理相似!此法能夠估算出單機的某接口的QPS是多少!

估算

咱們如今估計出了單機的QPS。接下來,估算集羣的QPS。
這就要根據負載均衡的策略來估計!
好比,你部署了32臺機器,負載均衡的策略恰巧爲輪詢,那集羣的QPS就是單機的QPS乘32就行了。
因此,根據具體的策略,來估計整個集羣的QPS多大!
而後接下來就是:


多嘴一句,通常2000QPS夠了!

總結

渣渣煙寫到此處,竟無語凝噎。但願你們有所收穫!

相關文章
相關標籤/搜索