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

戳藍字“CSDN雲計算

關注我們哦!

面试官:知道你的接口QPS是多少么?

作者 | 孤獨煙

引言

大家好,我是渣渣煙。

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

然而,近期有一段聊天記錄如下:

面试官:知道你的接口QPS是多少么?

看到這裡,不要吃驚,不要驚訝!

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

所以,牛皮都吹出去了。寫個文章,自己給自己圓上!

正文

QPS是什麼

我們先回憶一下,QPS的概念如下所示:

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

那我們怎麼估出每秒鐘能處理多少請求呢?

OK,用日誌來估計!那日誌怎麼記錄呢,細分下來,有兩種方式。

方式一:自己在接口裡記錄

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

假設現在我要統計index這個接口的QPS!

OK,什麼叫能體現該接口特性的字符串呢!就像上面的"渣渣煙"這個字符串,只在index這個接口裡出現過,沒在其他其他接口裡出現過!因此,只要統計出"渣渣煙"這個字符串在日誌裡的出現次數,就能知道該接口的請求次數!

什麼叫具有唯一性的字符串呢!所謂唯一性,指的是"渣渣煙"這個字符串,在這個接口的一次調用流程中,只出現一次!如果出現兩次,就會導致到時候統計出來的次數會多一倍,所以儘量選擇具有唯一性的字段!

方式二:利用tomcat的access log

<code>server.tomcat.accesslog.directory/<code><code>設定log的目錄,默認: logs/<code><code>server.tomcat.accesslog.enabled/<code><code>是否開啟access log,默認: false/<code>

此時,你訪問一次/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

//省略

這個時候,你執行一串命令長下面這樣的,進行統計就行!

<code>cat xx.log |grep 'GET /mvc2'|cut -d ' ' -f4|uniq -c|sort -n -r/<code>

出來等結果就是:

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!

現在,來講一下命令什麼意思!

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

那麼,如果是其他日誌格式,無外乎cut語句的處理不同而已,道理類似!此法可以估算出單機的某接口的QPS是多少!

估算

我們現在估計出了單機的QPS。接下來,估算集群的QPS。

這就要根據負載均衡的策略來估計!

比如,你部署了32臺機器,負載均衡的策略恰巧為輪詢,那集群的QPS就是單機的QPS乘32就好了。

所以,根據具體的策略,來估計整個集群的QPS多大!

然後接下來就是:

面试官:知道你的接口QPS是多少么?

多嘴一句,一般2000QPS夠了!

面试官:知道你的接口QPS是多少么?


分享到:


相關文章: