我 找到的几个原因,基本就是后端sql运行的比较多,单次访问看不出来,但是人比较多的时候就比较慢了,人少的时候20-200毫秒,人多的时 候,200-6000毫秒,优化之后基本保持在几十毫秒,优化策略就是减少不必要的sql,加上缓存,基本解决了卡顿的问题,顺便把这次用的一系列命令记 录下来,当个总结吧!
如果需要得到请求处理的时间,需要在nginx log 里面加上$request_time,下面是我的log_format。
nginx.conf
'$status $body_bytes_sent $request_body "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$request_time"';
以下是就是我用到的一些命令了。
获取pv数
获取每分钟的请求数量,输出成csv文件,然后用excel打开,可以生成柱状图。
上面的图是用excel生成的,也可以用命令行工具gnuplot生成png,我也试了一下,没什么问题,直接以编程的形式得到报表,去掉人工操作部分,很方便,但是有一点就是x轴数据比较多的时候,不能像excel一样自动稀释数据,所以我还是喜欢用excel来生成。
其实用来用去也就是那么几个命令:
cat:输入文件内容
grep:过滤文本
'sort':排序
'uniq':去重
'awk':文本处理
命令组合使用,单个命令可以使用多次,来达到多重过滤的效果,前面一个命令的输出就是后一个命令的输入,流式处理,只要学会这个命令,有多看似复杂的东西,都变得异常简单。
上面介绍的都是命令,下面再介绍一个直接输出html的,其实就是利用go-access来分析nginx日志。
go-access是以docker容器的形式运行的,只要你安装了docker,就能直接运行,免安装很方便。
以上脚本,配合日志每天的日志分割,然后在crontab里面配置一下自动运行脚本,可生成每一天的nginx报表,网站情况一幕了然,当然这里也有缺点,因为不实时。
想要统计实时数据,可以使用ngxtop 来查看,安装起来也很简单
以上~