如何查看线上机器的QPS
来源:互联网 发布:8051单片机 编辑:程序博客网 时间:2024/05/16 17:26
注:本文作者是笔者的leader
背景:线上有一个推荐服务,日志量比较大,想确认下是不是qps过高
问题:如何根据日志查看一个服务的qpstail -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左右
需要注意的是,cut的目的是将请求日志时间戳中的“秒”取出来,所以随着请求日志格式的不同,cut的写法也要随机应变~
2 0
- 如何查看线上机器的QPS
- 线上系统查看java进程是如何被杀掉的
- linux 下如何查看机器的配置
- 如何查看Linux机器的发行版
- 使用MySQLAdmin工具查看QPS
- 如何查看机器上安装的.net framework版本
- 如何查看自己机器已经开放的端口
- 如何查看局域网内的IP及机器名
- 查看机器的基本信息
- 线上的项目如何快速定位问题
- 线上机器没有开coredump情况下的查错
- 如何查看自己的电脑是32位机器还是64位机器
- QPS,PV和需要部署机器数量的公式计算(转载)
- 查询mysql的QPS
- iOS-四种查看线上崩溃日志的办法
- 查看tomcat线上部署项目实时日志的方法
- 峰值QPS和机器计算公式
- QPS
- python 正则表达式 groups和group有什么区别
- LeetCode解题报告--Integer to Roman
- POJ 1106 Transmitters
- 深入JavaScript(10)面向对象编程之概论
- 转载URL之nginx 反响代理
- 如何查看线上机器的QPS
- 【Visual Basic】vb6的ListView控件,对Access2003数据库的增删改查,判断是否有中文、多窗体操作
- 工程师,你为啥升不上去?
- xcode修改代码模拟器没有生效
- 深入JavaScript(11)求值策略(Evaluation strategy)
- JSON Web Token (JWT) 简介
- linux学习笔记-------压缩命令:zip 和 bzip2
- 手工运行 sudo dpkg --configure -a 解决此问题
- TypeError:'stepUp' called on an object that does not implement interface HTMLInputElement.