
正文
包含linux统计qps命令的词条
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Linux查看日志文件写入速度的4种方法
有时,我们需要查看某个文件的增长速度,如日志文件,以此来感受系统的负载情况,因为一般情况下,日志写入越快,说明系统负载越重。
本文就来介绍下Linux中查看日志增长速度的几种方法,如下:
首先要介绍的是dd,因为dd命令几乎所有主流发行版都自带,无需额外安装,如下:
如上,使用 tail -F 获取新写入的数据,然后用管道将数据交给dd,dd将数据拷贝到 /dev/null ,其中 status=progress 是用来显示拷贝速度的,可见,我们日志的写入速度是 471 kB/s 。
pv命令可以看做是带进度的cp,如下:
原理与dd类似,不过命令换成了pv。
由于日志数据都是程序(如java)写入的,而在如下的伪文件中,存放着程序打开的文件信息,如下:
于是定期的读取这个offset就可以知道文件的写入速度了,这也是cv命令的实现原理,如下:
通过写一个小脚本,定期观察文件大小,也可查看文件写入速度,如下:
通过watch再加上观察,也能大致看出速度,如下:
其实转念一想,如果我们在某个函数中打上日志,然后通过grep过滤出此日志,然后我们只要计算每秒输出的日志行数,这岂不就是函数执行的QPS了!
这里可以通过 151/15 计算出QPS是10,由于没有超过1000,所以看到的是0.0kB/s,如果使用pv命令,会更简单一些,如下:
相关问答
Q1: 系统压测时CPU达到100%但是QPS却很低
线上系统,正在做压力测试,刚开始10并发进行压测,cpu压到了100%但是系统最大qps才200多。通过JVM监控查看JVM younggc很频繁,fullGC数量为零。
cpu 达到100% 则先看cpu使用率最高是哪个进程,可以直接通过linux命令 top查看,找到对应的进程ID,发现正是压测的java系统进程ID,找到进程ID后,然后在查找该进程下CPU使用率最高是哪个线程,可以通过top -p 进程ID -H 命令显示线程使用cpu信息,效果如下:
图片中PID列则为十进制显示的线程ID,然后转换为16进制通过jstack 系统进程ID | grep 16进制线程ID 可以找到对应的线程信息如下,也就是该线程占用了一半左右的cpu
Finalizer线程是个单一职责的线程。这个线程会不停的循环等待java.lang.ref.Finalizer.ReferenceQueue中的新增对象。一旦Finalizer线程发现队列中出现了新的对象,它会弹出该对象,调用它的finalize()方法,将该引用从Finalizer类中移除,因此下次GC再执行的时候,这个Finalizer实例以及它引用的那个对象就可以回垃圾回收掉了。
说明Finalizer的队列中有许多的等待回收的垃圾对象,可以通过命令查看等待回收的对象都有哪些;
jmap -finalizerinfo 进程ID
执行命令后显示结果如下
发现有好多的自定义对象,通过类名可以看到这些对象都是通过CGLIB动态代理创建的,而这些动态代理类都默认实现了finalize方法,导致这些对象在进行垃圾回收时必须先要执行finalize方法,所以都积压到了finalizer的队列中。
1.不要使用cglib来给那些需要频繁进行垃圾回收的对象创建动态代理,这些对象大量创建的同时,也会创建相等数量的动态代理对象,使得内存占用迅速增长,并且不断进行垃圾回收,由于代理类重写了finalize方法,给垃圾回收带来了额外的压力。
2.尽量能够复用对象,不要每次都new一个对象
Q2: 面试官之问:知道你的接口“QPS”是多少吗? 怎么办
QPS是什么
我们先回忆一下,QPS的概念如下所示:
QPS(Query Per Second):每秒请求数,就是说服务器在一秒的时间内处理了多少个请求。
那我们怎么估出每秒钟能处理多少请求呢?
OK,用日志来估计!那日志怎么记录呢
此时,你访问一次/home/index地址,会有下面这样日志
那么,你就可以根据日志中,该记录的出现次数,统计index接口的QPS。
假设,你这会日志已经拿到手了,名字为xxx.log。
假设日志内容如下
这个时候,你执行一串命令长下面这样的,进行统计就行!
出来等结果就是
然后你就知道,原来在20:40:44 分。。这个接口的QPS最高,达到了惊人的2QPS!
现在,来讲一下命令什么意思!
那么,如果是其他日志格式,无外乎 ”cut语句“的处理不同而已,道理类似!此法可以估算出单机的某接口的 “QPS” 是多少!
估算
我们现在估计出了单机的QPS。接下来,估算集群的QPS。
这就要根据负载均衡的策略来估计!
比如,你部署了32台机器,负载均衡的策略恰巧为轮询,那集群的QPS就是单机的QPS乘32就好了。
所以,根据具体的策略,来估计整个集群的QPS多大!
多嘴一句,一般2000QPS够了!
Q3: QPS、RT、PV、UV、SLA、DAU 介绍
[TOC]
每秒查询率(Query Per Second) ,每秒的响应请求数,也即是最大吞吐能力。
响应时间是指系统对请求作出响应的时间
访问量即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次单台服务器每天
独立访客即Unique Visitor,访问您网站的一台电脑客户端为一个访客,在一段时间内。
PageRank,即网页的级别技术,或网站权重或受欢迎度。表示一个网页的重要程度。级别从1到10级,10级为满分。PR值越高说明该网页越受欢迎。
Service-Level Agreement,是关于网络服务供应商和客户间的一份合同,其中定义了服务类型、服务质量和客户付款等术语。传统上,SLA包含了对服务有效性的保障,譬如对故障解决时间、服务超时等的保证。但是随着更多的商业应用在Internet的广泛开展,越来越需要SLA对性能(如响应时间)作出保障。
Daily Active User日活跃用户数量。常用于反映网站、互联网应用或网络游戏的运营情况。DAU通常统计一日(统计日)之内,登录或使用了某个产品的用户数(去除重复登录的用户),这与流量统计工具里的访客(UV)概念相似。MAU 是月活数。
并发数:并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量
吞吐量:吞吐量是指系统在单位时间内处理请求的数量
QPS = req/sec = 请求数/秒QPS统计方式
一般使用 http_load 进行统计
QPS = 总请求数 / ( 进程总数 * 请求时间 )QPS: 单个进程每秒请求服务器的成功次数
峰值QPS:
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
PV:
访问量即Page View,
即页面浏览量或点击量,用户每次刷新即被计算一次单台服务器每天PV计算公式1:每天总PV = QPS * 3600 * 6公式2:每天总PV = QPS * 3600 * 8
UV:
独立访客即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次服务器数量:机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器机器:ceil( 每天总PV / 单台服务器每天总PV )
例子:
每天300w PV 的在单台机器上,这台机器需要多少QPS?答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)如果一台机器的QPS是58,需要几台机器来支持?答:139 / 58 = 3
linux统计qps命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、linux统计qps命令的信息别忘了在本站进行查找喔。






