笨法算RPS

计算rps的最简单方法是将一天的总访问量除以一天的总秒数,但这只能得到一个平均值,无法反映各个时间点的真实情况。真正有价值的是即时rps数据。如果有一个好的监控系统,这并不难实现,但遗憾的是我没有这样的系统。实际上,我遇到的问题更加复杂:大部分接口是用php编写的,少部分是用lua编写的,因此需要分别计算php和lua的即时rps数据。

假设Web日志已经按天分割,如果你不知道如何操作,可以参考我之前写的文章「被遗忘的Logrotate」。日志格式如下所示:

1.2.3.4 - - [25/Jul/2013:00:01:01 +0800] "GET /url HTTP/1.1" ...

从日志格式来看,第四个字段是时间,第七个字段是网址。有了这些信息,我们可以使用AWK来计算LUA和PHP的即时RPS大小。如果你读过我之前的文章,应该记得我在「DevOps的三板斧」一文中提到了一个类似的案例。不过,本文的问题更为复杂,因此我还是要详细解释一下。代码如下:

#!/usr/bin/awk -ffunction rps(data, file) {    COMMAND = "sort -o " file    for(time in data) {        print time, "t", data[time] | COMMAND    }    close(COMMAND)}{    URL  = $7    TIME = substr($4, 14)}URL ~ /^/foo/lua/  { LUA[TIME]++; next }URL ~ /^/bar/lua/  { LUA[TIME]++; next }                     { PHP[TIME]++ }END {    rps(LUA, "LUA.log")    rps(PHP, "PHP.log")}

注意:在通过管道对AWK中的无序数组进行排序后,需要关闭管道。

计算得到的RPS文本数据格式大致如下:

00:00:00  11500:00:01  8500:00:02  9500:00:03  8500:00:04  9000:00:05  87

接下来,我们使用Gnuplot将这些数据可视化:

人声去除 人声去除

用强大的AI算法将声音从音乐中分离出来

人声去除 23 查看详情 人声去除

#!/usr/bin/gnuplotset terminal png size 500,400set gridset xdata timeset timefmt "%H:%M:%S"set format x '%H'set xlabel "Time"set ylabel "RPS"set output "rps.png"plot "LUA.log" using 1:2 with line title "LUA",      "PHP.log" using 1:2 with line title "PHP"

最终生成的效果图如下:

笨法算RPS

从图中可以看出,LUA接口的访问量高峰大致在晚上六点和凌晨零点,而PHP的访问量高峰大致在晚上十点左右,两者的访问量低谷基本都在凌晨四五点左右。

以上就是笨法算RPS的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/819437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
谁是卧底游戏规则详解:5-8人聚会必备推理技巧
上一篇 2025年11月27日 02:40:43
vscode如何运行halide vscode图像算法开发指南
下一篇 2025年11月27日 02:40:43

相关推荐

发表回复

登录后才能评论
关注微信