<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 1992字,需瀏覽 4分鐘

           ·

          2019-11-05 23:22

          本文公眾號(hào)來源:孤獨(dú)煙作者:孤獨(dú)煙


          引言

          大家好,我是渣渣煙。

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

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

          2a1f039b325b990929cc0a867240538d.webp

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

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

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

          正文

          QPS是什么

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

          QPS(Query Per Second):每秒請(qǐng)求數(shù),就是說服務(wù)器在一秒的時(shí)間內(nèi)處理了多少個(gè)請(qǐng)求。

          那我們?cè)趺垂莱雒棵腌娔芴幚矶嗌僬?qǐng)求呢?
          OK,用日志來估計(jì)!那日志怎么記錄呢,細(xì)分下來,有兩種方式。
          方式一:自己在接口里記錄
          這種方式指的是在你的接口里,日志記錄了能體現(xiàn)該接口特性的,并具有唯一性的字符串!
          例如,下面這一段代碼

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

          假設(shè)現(xiàn)在我要統(tǒng)計(jì)index這個(gè)接口的QPS!
          OK,什么叫能體現(xiàn)該接口特性的字符串呢!就像上面的"渣渣煙"這個(gè)字符串,只在index這個(gè)接口里出現(xiàn)過,沒在其他其他接口里出現(xiàn)過!因此,只要統(tǒng)計(jì)出"渣渣煙"這個(gè)字符串在日志里的出現(xiàn)次數(shù),就能知道該接口的請(qǐng)求次數(shù)!

          什么叫具有唯一性的字符串呢!所謂唯一性,指的是"渣渣煙"這個(gè)字符串,在這個(gè)接口的一次調(diào)用流程中,只出現(xiàn)一次!如果出現(xiàn)兩次,就會(huì)導(dǎo)致到時(shí)候統(tǒng)計(jì)出來的次數(shù)會(huì)多一倍,所以盡量選擇具有唯一性的字段!

          方式二:利用tomcat的access log
          如果你的日志里沒有我上面提到的字段。OK,那就用tomcat自帶的access log功能吧!
          因?yàn)槲移綍r(shí)內(nèi)置的tomcat比較多,指定下面兩個(gè)屬性即可

          server.tomcat.accesslog.directory
          設(shè)定log的目錄,默認(rèn):?logs
          server.tomcat.accesslog.enabled
          是否開啟access?log,默認(rèn):?false

          此時(shí),你訪問一次/home/index地址,會(huì)有下面這樣日志

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

          那么,你就可以根據(jù)日志中,該記錄的出現(xiàn)次數(shù),統(tǒng)計(jì)index接口的QPS。

          實(shí)戰(zhàn)

          假設(shè),你這會(huì)日志已經(jīng)拿到手了,名字為xxx.log。
          假設(shè)日志內(nèi)容如下

          //省略,都長(zhǎng)差不多,貼其中一條就行
          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
          //省略

          這個(gè)時(shí)候,你執(zhí)行一串命令長(zhǎng)下面這樣的,進(jìn)行統(tǒng)計(jì)就行!
          cat xx.log |grep 'GET /mvc2'|cut -d ' ' -f4|uniq -c|sort -n -r
          出來等結(jié)果就是

          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 分。。這個(gè)接口的QPS最高,達(dá)到了驚人的2QPS!

          現(xiàn)在,來講一下命令什么意思!
          cat xxx.log:讀文件內(nèi)容
          grep 'GET /mvc2':將文件內(nèi)容按照GET /mvc2進(jìn)行過濾
          cut -d ' ' -f4:過濾出來的內(nèi)容按照空格進(jìn)行分割,取第四列內(nèi)容
          uniq -c:每列旁邊顯示該行重復(fù)出現(xiàn)的次數(shù)
          sort -n -r:依照數(shù)值的大小排序

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

          估算

          我們現(xiàn)在估計(jì)出了單機(jī)的QPS。接下來,估算集群的QPS。
          這就要根據(jù)負(fù)載均衡的策略來估計(jì)!
          比如,你部署了32臺(tái)機(jī)器,負(fù)載均衡的策略恰巧為輪詢,那集群的QPS就是單機(jī)的QPS乘32就好了。
          所以,根據(jù)具體的策略,來估計(jì)整個(gè)集群的QPS多大!
          然后接下來就是:

          c830a3110c8716f5e857c677f6b1b736.webp

          兩年嘔心瀝血的文章「面試題」「基礎(chǔ)」「進(jìn)階」這里全都有!


          200多篇原創(chuàng)技術(shù)文章海量視頻資源精美腦圖面試題

          長(zhǎng)按掃碼可關(guān)注獲取?

          在看和分享對(duì)我非常重要!3ffa56a248894ce5aead42d44406dde6.webp


          近期推薦:低價(jià)購(gòu)買云服務(wù)器+搭建教程

          瀏覽 307
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲国产精品久久 | 午夜成人视频 | 狠狠综合一区 | 国产成人免费视频 | 欧美精品免费在线观看 |