Page

[笔记]通过分析nginx日志定位服务器流量集中点

703Anson17-11-10


最近一段时间,我发现阿里云服务器的流量用的非常快,扣费清单比以往来得快且额度高,但流量强度跟ddos比又小了点,所以我初步判断是服务器上的视频图片外链资源消耗的流量比较多的原因。

首先我购买了阿里云提供的10G共享流量包,开通的时候需要把ECS服务器转换成VPC专用网络服务器;


8号10点钟购买流量包:

blob.png


9号8点已经用剩800m:

blob.png


看来流量包也撑不了多久


然后我去查看nginx日志,发现日志没有定时切割,现在已经有二百多M了,只能先做一个定时切割


我的日志目录在  /var/log/nginx,  原来只有access.log访问日志跟error.log错误日志文件,现在我新建access目录跟error目录,然后建立cut_log.sh脚本文件,用来定时每小时把access.log移动到access/access-年月日时间.log,以及定时每小时把error.log移动到error/error-年月日时间.log

blob.png


cut_log.sh

#!/bin/bash
set -e  ## 语句出错立即退出

LOGS_PATH=/var/log/nginx   ##日志目录

TODAY=$(date -d "today" +%Y-%m-%d-%H-%M)  ##每小时一次,如果每天一次,则把today改成yesterday

mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access/access_${TODAY}.log
mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error/error_${TODAY}.log

kill -USR1 $(cat /var/run/nginx.pid)  //向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件


向定时器crontab加入任务


crontab -e 进入编辑模式

输入

0 * * * * /bin/bash /var/log/nginx/cut_log.sh  //每小时执行一次

或者

0 0 * * * /bin/bash /var/log/nginx/cut_log.sh  //每天执行一次

保存


重启crontab


service crond restart


最后通过分析每小时的流量以及日志文件发现:视频、背景图、js库在其中的请求次数很多,并且文件大小也很大,于是我将这些文件转移到七牛云,第二天,流量骤降,效果明显



脚本来源:https://www.cnblogs.com/benio/archive/2010/10/13/1849935.html




来自ansion博客 

http://www.tp0.top

2017-11-10 09:36:09