前言

通过分析nginx的 access.log 来分析QPS
其中每一条都是这种格式

> 111.37.176.163 - - [02/May/2022:12:20:23 +0800] "GET /api/dyTag_test/tag HTTP/1.1" 404 6622 "-" "jianpian-android/350"

我只要像sql语句一样 按时间分组统计就能获得QPS了

查找最高的10个QPS
# awk '{print $4}' 输出第四个参数 即时间
# uniq -c 合并相同数据
# sort -rn 倒序 访问高的在最上面
# head -n 10 取10条
cat access.log | awk '{print $4}'| uniq -c | sort -rn | head -n 10

# 数据示例
  19608 [16/Mar/2022:09:30:37
  19458 [16/Mar/2022:09:30:36
  19401 [16/Mar/2022:09:30:35
  18762 [16/Mar/2022:09:30:34
  18688 [16/Mar/2022:09:32:30
  18325 [16/Mar/2022:09:32:28
  18034 [16/Mar/2022:09:32:32
  17840 [16/Mar/2022:09:32:29
  17594 [16/Mar/2022:09:32:31
  12012 [16/Mar/2022:09:30:33

查找最低的10个QPS
# sort -n 正序 访问低的在最上面
cat access.log | awk '{print $4}'| uniq -c | sort -n | head -n 10

# 数据示例
      1 [01/Apr/2022:00:04:35
      1 [01/Apr/2022:00:31:25
      1 [01/Apr/2022:01:19:09
      1 [01/Apr/2022:01:19:10
      1 [01/Apr/2022:01:56:43
      1 [01/Apr/2022:02:10:32
      1 [01/Apr/2022:02:10:33
      1 [01/Apr/2022:02:10:34
      1 [01/Apr/2022:02:10:37
      1 [01/Apr/2022:02:10:38
查找QPS最高的10个及其接口地址
# $7 是url
cat access.log | awk '{print $4 $7}'| uniq -c | sort -rn | head -n 10

# 数据展示
  19608 [16/Mar/2022:09:30:37/
  19458 [16/Mar/2022:09:30:36/
  19401 [16/Mar/2022:09:30:35/
  18762 [16/Mar/2022:09:30:34/
  18688 [16/Mar/2022:09:32:30/
  18325 [16/Mar/2022:09:32:28/
  18034 [16/Mar/2022:09:32:32/
  17840 [16/Mar/2022:09:32:29/
  17594 [16/Mar/2022:09:32:31/
  12012 [16/Mar/2022:09:30:33/
查找QPS最低的10个及其接口地址
cat access.log | awk '{print $4 $7}'| uniq -c | sort -n | head -n 10

# 数据示例
      1 [01/Apr/2022:00:04:35/
      1 [01/Apr/2022:00:31:25/
      1 [01/Apr/2022:01:19:06/
      1 [01/Apr/2022:01:19:06/navigation.html
      1 [01/Apr/2022:01:19:07/fx_plcinf.html?CMD=Monitor%20Start&LANG=EN
      1 [01/Apr/2022:01:19:08/cgi-bin/luci/;stok=/locale?form=lang
      1 [01/Apr/2022:01:19:08/ifixwebspace/
      1 [01/Apr/2022:01:19:09/KingViewWeb/
      1 [01/Apr/2022:01:19:10/webconfig.ini
      1 [01/Apr/2022:01:56:43/
统计指定接口的QPS
# 统计home接口QPS从高到低展示10条
# 从低到高 sort -n
cat access.log | awk '{print $4 $7}'| grep "/home*"| uniq -c | sort -rn | head -n 10

# 数据展示
      2 [09/Apr/2022:23:48:20/home
      2 [09/Apr/2022:23:42:50/home
      2 [09/Apr/2022:23:42:49/home
      2 [09/Apr/2022:23:40:42/home
      2 [09/Apr/2022:23:40:39/home
      2 [09/Apr/2022:23:40:37/home
      2 [09/Apr/2022:23:40:36/home
      1 [31/Mar/2022:13:27:39/home.cfm
      1 [31/Mar/2022:13:27:39/home.cfm

更多推荐