首頁 > 軟體

Linux上如何檢視QPS

2020-06-16 17:55:27

背景:線上有一個推薦服務,紀錄檔量比較大,想確認下是不是qps過高

問題:如何根據紀錄檔檢視一個服務的qps

tail -f XXX.log,可以發現紀錄檔格式如下:
[8708-10 14:51:44 638 INFO ] [async task worker[61]] recommend.components.KeywordService[87] - cateid=252 pageNum=1
[8708-10 14:51:44 666 INFO ] [async task worker[62]] recommend.components.KeywordService[87] - cateid=42205
[8708-10 14:51:44 673 INFO ] [async task worker[0]] recommend.components.KeywordService[87] - cateid=29 pageNum=2
[8708-10 14:51:44 677 INFO ] [async task worker[1]] recommend.components.KeywordService[87] - cateid=252 pageNum=3

紀錄檔規範中,有一列“請求時間”,可以通過這個“請求時間”估算出服務的qps, 步驟如下:
(1)先找一條使得一個請求有且只有一行的紀錄檔,常用工具是grep,此例需要grep recommend.components.KeywordService,得出的結果,一個請求對應一行紀錄檔
(2)取出時間這一列,常用的工具是cut或者awk,這裡介紹一下cut(大家到linux上去man一下)
    -d 引數,按照某個字元分隔
    -f 引數,取出分隔後的第幾列
    這個例子中,按照“空格”分隔後,時間在第二列
進行1,2兩步操作後,得到的結果為
    14:51:44
    14:51:44
    14:51:45
    14:51:45
    14:51:46
    14:51:46
(3)對結果進行去重,取計數,常用的工具是uniq,引數是-c

故,整個shell命令是:
命令:tail -f XXX.log | grep recommend.components.KeywordService | cut -d' ' -f2 | cut -d':' -f3 | uniq -c
說明:取增量 | 一個請求取一行 | 把時間擷取出來 | 把秒數擷取出來 | 去重取計數
得到的結果是
    136 43
    126 44
    115 45
    131 46
    132 47
可以看到,14:51:43,共有136條紀錄檔
    44,有126條紀錄檔
    45,有115條紀錄檔
    ...
結論,這個模組,單機的qps在120-130左右

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-08/121655.htm


IT145.com E-mail:sddin#qq.com