编程技术分享平台

网站首页 > 技术教程 正文

Nginx服务优化之日志切割与设置链接超时

xnh888 2024-09-09 09:48:31 技术教程 36 ℃ 0 评论

Nginx服务优化可以从隐藏版本号、更改用户与组、配置网页缓存时间、日志切割、设置连接超时这几个方面进行优化。这一节来看看日志切割与设置连接超时。

日志切割


随着Nginx的运行时间的增加,产生的日志也会增加。太大的日志文件非常不便于分析和排查,因此需要定期的进行日志文件的切割。Nginx没有类似Apache的cronlog日志分割处理功能,但可以通过Nginx的信号控制功能脚本来实现日志的自动切割,并将脚本加入到Linux的计划任务中,让脚本在每天的固定时间执行。

(1)首先编写脚本/opt/fenge.sh,把Nginx的日志文件/usr/local/nginx/logs/access.log移动到目录/var/log/nginx下面,以当前时间作为日志文件的名称,然后用kill-USR1创建新的日志文件/usr/local/nginx/logs/access.log,最后删除前30天的日志文件。

[root@localhost ~]# vim /opt/fenge.sh 
#!/bin/bash
#Filename:fenge.sh
d=$(date -d "-1 day" "+%Y%m%d") #显示一天前的时间
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_path ] || mkdir -p $logs_path #创建日志文件目录
mv /usr/local/nginx/logs/access.log #移动并重命名日志文件 ${logs_path}/test.com-access.log-$d
kill -USR1 $(cat $pid_path) #重建新的日志文件
find $logs_path -mtime +30 | xargs rm -rf #删除30天之前的日志文件

(2)执行/opt/fenge.sh,测试日志文件是否被切割。

[root@localhost ~]# chmod +x /opt/fenge.sh 
[root@localhost ~]# ./fenge.sh #执行分割脚本
[root@localhost ~]# ls /var/log/nginx/
test.com-access.log-20180628

(3)设置crontab任务,定期执行脚本自动进行日志分割。

[root@localhost ~]# crontab -e
0 1 * * * /opt/fenge.sh #每天的凌晨1点执行/opt/fenge.sh脚本

设置连接超时

在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可以设置相应的连接超时参数,实现对连接访问的时间的控制。

(1)修改配置文件nginx.conf,设置keepalive_timeout超时时间。

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
 ... #省略内容
 http {
 ...
 keepalive_timeout 65 180; #设置超时是180秒
 client_header_timeout 80; #指定请求头的超时时间 
 client_body_timeout 80; #指定请求体超时时间
 ... #省略内容
 }

keepalive_timeout 第一个参数指定了与客户端的keep-alive连接超时时间,服务器将会在这个时间后关闭连接;第二个参数指定了响应头Keep-Alive:timeout=time中的time值。这个头能让浏览器主动关闭连接,这样服务器就不必去关闭连接。

(2)重启nginx服务,访问网址,用Fidder工具抓包。

举两个例子,怎么样写好代码

最经典的算法,献给正在面试道路上的你

如果你现在在面试PHP的道路上,看看面试基础题吧

Redis相关面试题

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表