首页 运维 网络学院 查看内容

系统优化之Nginx性能排查

2017-3-4 18:13 |来自: 互联网 2838 0

摘要: 网站访问很慢?应用感觉很慢,是你的系统设置有问题,还是代码本身运行效率慢呢。总要拿出证据来。查看nginx请求处理的时间在nginx log 里面加上$request_time,就能在日志中查看到nginx请求所使用的时间,根据这个可 ...

网站访问很慢?应用感觉很慢,是你的系统设置有问题,还是代码本身运行效率慢呢。总要拿出证据来。

查看nginx请求处理的时间

在nginx log 里面加上$request_time,就能在日志中查看到nginx请求所使用的时间,根据这个可以快速找到慢应用请求。

例如修改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"';


常用日志分割命令

主要用到命令如下

cat:输入文件内容

grep:过滤文本

'sort':排序

'uniq':去重

'awk':文本处理

获取pv数

$ 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

如下图

PS: 也可以用gnuplot生成图片

后记:统计实时数据,可以使用ngxtop 来查看,安装起来也很简单,安装之后,先进到nginx目录,然后再运行,-c 指定配置文件,-t 刷新频率,单位为秒

$ pip install ngxtop //安装ngxtop

$ cd /usr/local/nginx

$ ngxtop -c conf/nginx.conf -t 1

文/外星人

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除
1

路过

雷人

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

  • 路过

    匿名

最新评论

返回顶部