当服务器压力比较大,跑起来很费力时候。我们经常做站点页面优化,会去查找那些页面访问次数比较多,而且比较费时。 找到那些访问次数高,并且比较耗时的地址,就行相关优化,会取得立竿见影的效果的。 下面是我在做优化时候,经常用到的一段shell 脚本。 这个也可以算是,统计web页面的slowpage 慢访问页面,象mysql slowquery 。

以下是我的:nginx 配制
log_format main '$remote_addr - remoteuser[remote_user [remoteu​ser[time_local] KaTeX parse error: Double superscript at position 33: … '̲"status" bodybytessent"body_bytes_sent "bodyb​ytess​ent"http_referer" ’
‘“httpuseragent""http_user_agent" "httpu​sera​gent""http_x_forwarded_for” $request_time’;

access_log  /var/log/nginx/access.log  main buffer=32k;

从上面配置,可以看到:ip在 第一列,页面耗时是在最后一列,中间用空格分隔。 因此在awk 中,分别可以用:$1
$NF 读取到当前值。 其中NF是常量,代表整个列数。

下面是分析代码的shell文件,可以存为slow.sh

#!/bin/shexport PATH=/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin;
export LANG=zh_CN.GB2312;function usage()
{echo "$0 filelog  options";exit 1;
}function slowlog()
{
#set -x;
field=$2;
files=$1;
end=2;
msg="";[[ $2 == '1' ]] && field=1&&end=2&&msg="总访问次数统计";
[[ $2 == '2' ]] && field=3&&end=4&&msg="平均访问时间统计";echo -e "\r\n\r\n";
echo -n "$msg";
seq -s '#' 30 | sed -e 's/[0-9]*//g';awk '{split($7,bbb,"?");arr[bbb[1]]=arr[bbb[1]]+$NF; arr2[bbb[1]]=arr2[bbb[1]]+1; } END{for ( i in arr ) { print i":"arr2[i]":"arr[i]":"arr[i]/arr2[i]}}' $1 | sort  -t: +$field -$end -rn |grep "pages" |head -30 | sed 's/:/\t/g'
}[[ $# < 2 ]] && usage;slowlog $1 $2;

只需要执行:slow.sh 日志文件 1或者2
1:三十条访问最平凡的页面
2:三十条访问最耗时的页面

执行结果如下:

chmod +x ./slow.shchmod +x slow.sh
./slow.sh /var/log/nginx/
./slow.sh /var/log/nginx/access.log 2平均访问时间统计#############################
/pages/########1.php        4       120.456 30.114
/pages/########2.php 1       16.161  16.161
/pages/########3.php 212     1122.49 5.29475
/pages/########4.php     6       28.645  4.77417
..................

shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询)相关推荐

  1. shell最大出现和连续出现次数_shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询)...

    当服务器压力比较大,跑起来很费力时候.我们经常做站点页面优化,会去查找那些页面访问次数比较多,而且比较费时. 找到那些访问次数高,并且比较耗时的地址,就行相关优化,会取得立竿见影的效果的. 下面是我在 ...

  2. 宝塔linux shell定时访问url,bt(宝塔)面板添加shell 脚本通过nginx日志封访问频率过高的IP...

    额,这篇文章是bt(宝塔)面板来写的文章,其他的程序如果是wdcp管理面板也有添加shell脚本的功能,大鸟自己用的是bt(宝塔)面板,所以说说如何添加shell 脚本通过nginx日志封访问频率过高 ...

  3. shell脚本使得nginx日志每天定时切割压缩

    Linux下添加shell脚本使得nginx日志每天定时切割压缩 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常时查日志 ...

  4. python定时任务执行shell脚本切割Nginx日志-慎用

    Python定时任务执行shell脚本切割Nginx日志(慎用) 缘起 我们有一个Nginx服务用来接收埋点上报数据,输出的日志文件比较大,Nginx没有自带日志分割组件,这样输出的日志文件就比较大, ...

  5. SHELL 分析 列出当天访问次数最多的IP

    SHELL 分析日志 作者:lvtao发布于:2013-7-3 14:58 Wednesday 分类:工具源码 列出当天访问次数最多的IP 命令:cut -d- -f 1 /usr/local/apa ...

  6. shell脚本统计分析Nginx日志

    #!/bin/bash #功能描述(Description):Nginx标准日志分析脚本. #统计信息包括: #1.页面访问量PV #2.用户量UV #3.人均访问量 #4.每个IP的访问次数 #5. ...

  7. python分析nginx日志

    利用python脚本分析nginx日志内容,默认统计ip.访问url.状态,可以通过修改脚本统计分析其他字段. 一.脚本运行方式 python count_log.py -f med.xxxx.com ...

  8. python分析nginx日志_利用python分析nginx日志

    最近在学习python,写了个脚本分析nginx日志,练练手.写得比较粗糙,但基本功能可以实现. 脚本功能:查找出当天访问次数前十位的IP,并获取该IP来源,并将分析结果发送邮件到指定邮箱. 实现前两 ...

  9. ip访问次数统计 nginx_Linux分析Nginx日志统计IP访问次数的shell脚本

    平时运维遇到最多的就是nginx的日志分析了,要时常做系统监控,检查IP的访问次数是否有异常,防止恶意访问. 假设我的nginx日志如下: ....... 211.253.43.23 - - [03/ ...

最新文章

  1. Roberts 边缘检测
  2. 自定义Seekbar拖动条式样
  3. 网络推广离不开关键词的精准挖掘
  4. 蒙特卡罗(Monte Carlo)方法
  5. JavaScript:prototype属性使用说明
  6. 21-while里的break简单用法
  7. 根据屏幕大小制定显示页面
  8. python是什么意思-python中class是什么意思
  9. PHP设计模式——代理模式
  10. WinMM.dll 函数汇总
  11. 公司所有账号和密码,都要记录成文档
  12. 屏幕滑动_小米滑盖式可折叠手机渲染图曝光,屏幕不仅可以折叠还可滑动
  13. quartus 14.1破解失败解决方案
  14. 交叉编译JRTPLib库
  15. IDEA 社区版进行 Web 开发
  16. T1292:宠物小精灵之收服
  17. MPN (Learning Normal Dynamics in Videos with Meta Prototype Network)代码阅读
  18. swiper滑到最后一页交互
  19. RFID与物联网的关系
  20. 蝴蝶效应,青蛙现象,鳄鱼法则,鲇鱼效应,羊群效应,刺猬法则,手表定律,破窗理论,二八定律,木桶理论,马太效应,这些你都明白吗

热门文章

  1. Python学习入门基础教程(learning Python)--5.6 Python读文件操作高级
  2. 【Android MyEclipse】no projects are found to import 如何解决
  3. VirtualBox 安装 Linux 时遇到的问题及解决办法
  4. 去中心化交易所如何“惊世骇俗”?
  5. MemCache详细解读(转)
  6. linux的特殊符号与正则表达式
  7. 一种在旧代码上增加新需求的重构模式
  8. 很好用的软件 RouterPassView
  9. js面向对象的程序设计 --- 下篇 继承启蒙
  10. 关于数据库的一些基本操作语句