专栏名称: 数据分析与开发
伯乐在线旗下账号,分享数据库相关技术文章、教程和工具,另外还包括数据库相关的工作。偶尔也谈谈程序员人生 :)
目录
相关文章推荐
数据中心运维管理  ·  部门:数据中心必须 ... ·  4 天前  
数据中心运维管理  ·  牢记这10个关键,有效降低数据中心运营风险 ·  3 天前  
数据中心运维管理  ·  蓄电池充放电试验培训课件 ·  2 天前  
Java知音  ·  公司新来一个技术总监:禁止将 UUID ... ·  2 天前  
Java知音  ·  公司新来一个技术总监:禁止将 UUID ... ·  2 天前  
AustinDatabases  ·  眼见高楼起,眼见高楼塌,MySQL的好日子到头了 ·  3 天前  
AustinDatabases  ·  眼见高楼起,眼见高楼塌,MySQL的好日子到头了 ·  3 天前  
51好读  ›  专栏  ›  数据分析与开发

Nginx 日志分析及性能排查

数据分析与开发  · 公众号  · 数据库  · 2017-03-02 20:25

正文

(点击 上方公众号 ,可快速关注)


作者:-外星人-

my.oschina.net/362228416/blog/844713

如有好文章投稿,请点击 → 这里了解详情


最近一直在做性能排查,思路就是根据分析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数


$ 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







请到「今天看啥」查看全文