引用于:
如何查看线上机器的QPS
tomcat访问(access)日志配置、记录Post请求参数
1. 需求:
- 服务器上线之后, 对接了三方推广,每天的指定时间并发量都特别高。但是对于这个高没有概念, 所以需要知道在那个时间段的访问情况。
2. 思路:
- 通过tomcat的accessLog,使用linux的文本分析命令,获取每秒的log数量,再分析出请求次数。
3. 步骤:
-
配置tomcat的 access log。
现在的服务器大多用上了Spring Boot,配合着嵌入式Tomcat, 关于Tomcat的所有配置, 都只需要在yml文件里面配置即可。以往, 配置access log的方式是在server.xml,Host 标签下, 添加Value标签, 来配置access log。更多的自定义配置方式,可以跳转查看Tomcat access log配置
server.xml
第二种配置方式, 是在application.yml里, 配置 server.tomcat.accesslog:
application.yml
在里我只配置了日志目录,以及开启日志。
配置完成之后, 访问服务器, tomcat就会打印访问日志,默认格式为:
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
发现, 只要获取每一条里面的 19/Nov/2017:23:55:27 这一部分数据, 然后将这部分数据通过uniq -c,就得到每一秒,都有多少条访问日志。所以大概的思路就是, 通过tailf 进行日志的打印, 然后使用cut 进行每一行字符串的分割得到时间那一部分, 再通过uniq -c 得到每一秒的行数。最终得到
tailf temp.log | cut -d ' ' -f4 | uniq -c
其中
temp.log 是文件名称, 通过cut -d ' ' -f4 命令, 将每一行使用空格进行分割, 取第四个,就得到了时间那一部分。
最终得到结果
temp.log
查看历史qps
- 大概思路其实和上面差不多, 配置好tomcat access日志之后, 将需要查看的日志导入到同一个地方, 然后使用文本分析命令,进行分析。
- 将多个日志文件进行收集
cat ./access_log.*.log > ./temp.log
- 对收集起来的日志进行统计分析。
cat ./temp.log | cut -d ' ' -f4 | uniq -c | sort -n -r -o ./temp_sorted.log
sort 是对日志根据访问次数进行排序, 得到哪一段时间的qps最高。
最终,就得到历史的一个QPS数据啦~
-
uniq:
-c或——count:在每列旁边显示该行重复出现的次数; -
cut:
-d:用来定义分隔符,默认为tab键,一般与-f配合使用(如果分隔符是空格,必须是两个单引号之间确实有一个空格,是一个哦,不是支持多个)
-f:需要选取的字段,根据-d切分的字段集选取,下标从1开始 -
sort:
-n 依照数值的大小排序。
-r 以相反的顺序来排序。
-o<输出文件> 将排序后的结果存入指定的文件。
最后, 就能实时的打印出每秒的访问量啦~
网友评论