千家信息网

Nginx日志及性能排查举例分析

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要讲解了"Nginx日志及性能排查举例分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Nginx日志及性能排查举例分析"吧!导读最近一直在
千家信息网最后更新 2026年10月31日Nginx日志及性能排查举例分析

这篇文章主要讲解了"Nginx日志及性能排查举例分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Nginx日志及性能排查举例分析"吧!

导读

最近一直在做性能排查,思路就是根据分析nginx日志,得到响应耗时的url、以及请求时间,再得到这段时间的请求量,并发量,分析是并发的原因,还是本身就比较慢,如果是应用本身的原因,只需要找到对应的代码,然后进行优化就好了


我找到的几个原因,基本就是后端sql运行的比较多,单次访问看不出来,但是人比较多的时候就比较慢了,人少的时候20-200毫秒,人多的时候,200-6000毫秒,优化之后基本保持在几十毫秒,优化策略就是减少不必要的sql,加上缓存,基本解决了卡顿的问题,顺便把这次用的一系列 命令记录下来,当个总结吧

如果需要得到请求处理的时间,需要在nginx log 里面加上$request_time,下面是我的log_format

nginx.conf

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                  '$status $body_bytes_sent $request_body "$http_referer" '                  '"$http_user_agent" "$http_x_forwarded_for" "$request_time"';

修改之后重启nginx,查看nginx log的时候,就能看到nginx处理请求所花的时间了,这个时间基本就是后端所花的时间,所以可以根据这个字段来得到响应慢的请求

以下是就是我用到的一些 命令了

获取pv数

<1code class="hljs shell">$ cat /usr/local/nginx/logs/access.log | wc -l

获取ip数

$ cat /usr/local/nginx/logs/access.log | awk '{print $1}' | sort -k1 -r | uniq | wc -l

获取最耗时的请求时间、url、耗时,前10名, 可以修改后面的数字获取更多,不加则获取全部

$ cat /usr/local/class/logs/access.log | awk '{print $4,$7,$NF}' | awk -F '"' '{print $1,$2,$3}' | sort -k3 -rn | head -10

获取某一时刻的请求数量,可以把秒去掉得到分钟的数据,把分钟去掉得到小时的数据,以此类推

$ cat /usr/local/class/logs/access.log | grep 2017:13:28:55 | wc -l

获取每分钟的请求数量,输出成csv文件,然后用excel打开,可以生成柱状图

$ cat /usr/local/class/logs/access.log  | awk '{print substr($4,14,5)}' | uniq -c | awk '{print $2","$1}' > access.csv

上面的图是用excel生成的,也可以用命令行工具gnuplot生成png,我也试了一下,没什么问题,直接以编程的形式得到报表,去掉人工操作部分,很方便,但是有一点就是x轴数据比较多的时候,不能像excel一样自动稀释数据,所以我还是喜欢用excel来生成

其实用来用去也就是那么几个命令:

cat:输入文件内容

grep:过滤文本

'sort':排序

'uniq':去重

'awk':文本处理

命令组合使用,单个命令可以使用多次,来达到多重过滤的效果,前面一个命令的输出就是后一个命令的输入,流式处理,只要学会这个命令,有多看似复杂的东西,都变得异常简单。

上面介绍的都是命令,下面再介绍一个直接输出html的。

利用go-access来分析nginx日志

cat /usr/local/nginx/logs/access.log | docker run --rm -i diyan/goaccess   --time-format='%H:%M:%S'   --date-format='%d/%b/%Y'   --log-format='%h %^[%d:%t %^] "%r" %s %b "%R" "%u"' > index.html

go-access是以docker容器的形式运行的,只要你安装了docker,就能直接运行,免安装很方便

以上 脚本,配合日志每天的日志分割,然后在crontab里面配置一下自动运行 脚本,可生成每一天的nginx报表,网站情况一幕了然,当然这里也有缺点,因为不实时

想要统计实时数据,可以使用ngxtop 来查看,安装起来也很简单

$ pip install ngxtop

运行的话,先进到nginx目录,然后再运行,-c 指定配置文件,-t 刷新频率,单位为秒

$ cd /usr/local/nginx$ ngxtop -c conf/nginx.conf -t 1

但是这种实时的方式,还需要ssh远程登录,不太方便,还可以使用lua来进行实时统计,然后写一个界面把数据展示出来,通过 lua-nginx-module,nginx/tengine 都可以用,如果直接安装openresty的话,就方便了,内嵌了lua,不需要重新编译nginx了。

感谢各位的阅读,以上就是"Nginx日志及性能排查举例分析"的内容了,经过本文的学习后,相信大家对Nginx日志及性能排查举例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

命令 日志 就是 分析 时间 数据 运行 性能 时候 实时 处理 生成 内容 原因 文件 问题 学习 输出 形式 思路 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 中智农互联网科技 互联网科技工作委员会主任 互联网络科技有限公司 汇久创客互联网科技 亿账通互联网科技 互联网高科技企业 互联网科技公司名称 丰台科技园 互联网公司 甘肃拓世互联网科技有限公司 蓝色互联网科技 现代科技和互联网有关系吗 国大互联网教育科技有限公司工作 洛阳共同富裕互联网科技有限公司 互联网科技圈年度人物 互联网时代的科技公司 黑科技 体验场景 互联网大会 电子商务与互联网科技的关系 易企秀互联网科技是做什么的 盐城市攀科互联网科技有限公司 互联网金融 科技金融 华中科技大学互联网 深圳卡尔迅互联网科技有限公司怎么样 广州慧亚互联网科技怎么样 互联网金融科技公司干啥的 苏州五指互联网络科技有限 移动互联网科技公司 互联网公司黑科技创始人 互联网科技快讯热点 易企秀互联网科技是做什么的
0