引用于:
如何查看線上機(jī)器的QPS
tomcat訪問(access)日志配置、記錄Post請求參數(shù)
1. 需求:
- 服務(wù)器上線之后社露, 對接了三方推廣挟阻,每天的指定時(shí)間并發(fā)量都特別高。但是對于這個(gè)高沒有概念峭弟, 所以需要知道在那個(gè)時(shí)間段的訪問情況附鸽。
2. 思路:
- 通過tomcat的accessLog,使用linux的文本分析命令瞒瘸,獲取每秒的log數(shù)量坷备,再分析出請求次數(shù)。
3. 步驟:
-
配置tomcat的 access log情臭。
現(xiàn)在的服務(wù)器大多用上了Spring Boot省撑,配合著嵌入式Tomcat, 關(guān)于Tomcat的所有配置俯在, 都只需要在yml文件里面配置即可竟秫。以往, 配置access log的方式是在server.xml跷乐,Host 標(biāo)簽下鸿摇, 添加Value標(biāo)簽, 來配置access log劈猿。更多的自定義配置方式拙吉,可以跳轉(zhuǎn)查看Tomcat access log配置
第二種配置方式, 是在application.yml里揪荣, 配置 server.tomcat.accesslog:
在里我只配置了日志目錄筷黔,以及開啟日志。
配置完成之后仗颈, 訪問服務(wù)器佛舱, tomcat就會(huì)打印訪問日志,默認(rèn)格式為:
127.0.0.1 - - [19/Nov/2017:23:55:27 +0800] "POST /rest/user/checkToken.json HTTP/1.0" 200 138
-
使用linux tailf cut uniq配合挨决,得到每秒的access log
通過查看日志
127.0.0.1 - - [19/Nov/2017:23:55:27 +0800] "POST /rest/user/checkToken.json HTTP/1.0" 200 138
發(fā)現(xiàn)请祖, 只要獲取每一條里面的 19/Nov/2017:23:55:27 這一部分?jǐn)?shù)據(jù), 然后將這部分?jǐn)?shù)據(jù)通過uniq -c脖祈,就得到每一秒肆捕,都有多少條訪問日志。所以大概的思路就是盖高, 通過tailf 進(jìn)行日志的打印慎陵, 然后使用cut 進(jìn)行每一行字符串的分割得到時(shí)間那一部分眼虱, 再通過uniq -c 得到每一秒的行數(shù)。最終得到
tailf temp.log | cut -d ' ' -f4 | uniq -c
其中
temp.log 是文件名稱席纽, 通過cut -d ' ' -f4 命令捏悬, 將每一行使用空格進(jìn)行分割, 取第四個(gè)润梯,就得到了時(shí)間那一部分过牙。
最終得到結(jié)果
查看歷史qps
- 大概思路其實(shí)和上面差不多, 配置好tomcat access日志之后纺铭, 將需要查看的日志導(dǎo)入到同一個(gè)地方寇钉, 然后使用文本分析命令,進(jìn)行分析彤蔽。
- 將多個(gè)日志文件進(jìn)行收集
cat ./access_log.*.log > ./temp.log
- 對收集起來的日志進(jìn)行統(tǒng)計(jì)分析摧莽。
cat ./temp.log | cut -d ' ' -f4 | uniq -c | sort -n -r -o ./temp_sorted.log
sort 是對日志根據(jù)訪問次數(shù)進(jìn)行排序, 得到哪一段時(shí)間的qps最高顿痪。
最終镊辕,就得到歷史的一個(gè)QPS數(shù)據(jù)啦~
uniq:
-c或——count:在每列旁邊顯示該行重復(fù)出現(xiàn)的次數(shù);cut:
-d:用來定義分隔符蚁袭,默認(rèn)為tab鍵征懈,一般與-f配合使用(如果分隔符是空格,必須是兩個(gè)單引號之間確實(shí)有一個(gè)空格揩悄,是一個(gè)哦卖哎,不是支持多個(gè))
-f:需要選取的字段,根據(jù)-d切分的字段集選取删性,下標(biāo)從1開始sort:
-n 依照數(shù)值的大小排序亏娜。
-r 以相反的順序來排序。
-o<輸出文件> 將排序后的結(jié)果存入指定的文件蹬挺。
最后维贺, 就能實(shí)時(shí)的打印出每秒的訪問量啦~