qps是什么


QPS是什么

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

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

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

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

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

這種方式指的是在你的接口里,日志記錄了能體現該接口特性的,並具有唯一性的字符串!

例如,下面這一段代碼

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

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

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

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

方式二:利用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” 是多少!

 

https://zhuanlan.zhihu.com/p/84012183


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM