Nginx 每天莫名自动重启问题

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 最近在做基于openresty的waf,在测试openresty的过程中用openresty替代了原nginx,结果第二天又自动切换回了原nginx,通过ps -ef 看到nginx在凌晨3点多自动重启。连续几天在多个机器上都发现同样的情况。

最近在做基于openresty的waf,在测试openresty的过程中用openresty替代了原nginx,结果第二天又自动切换回了原nginx,通过ps -ef 看到nginx在凌晨3点多自动重启。连续几天在多个机器上都发现同样的情况。

刚开始我以为是以前的运维在crontab里配置里什么自动重启nginx的定时任务,然而crontab -l 并没有发现什么任务,同时我还发现nginx的日志是有做切割的,nginx log日志每天会自动切割压缩保存三天。这一发现让我更纳闷了,然后就在机器里筛选各种脚本都没有发现有做日志切割的,但是像这种动作明显还是通过类似定时任务做出来的。难道是之前运维在其他机器上有做远程执行脚本?心里还想真如果是这样,那这坑还真挖的深。经过一番查找然而还是没有。。。

左思右想,,,还是觉得nginx的莫名重启和日志分割是分不开的,在网上查找nginx日志分割发现都是通过脚本做的分割,但是之前服务器里并没有这样的脚本。我就觉得很有可能和nginx本身有关系了,然后就换了办法搜索,“nginx log 默认压缩日志”, 好吧,还真找到了。还是定时任务的原因。

因为Nginx在安装时加入了一个logrotate任务: /etc/logrotate.d/nginx

/var/log/nginx/*.log { 
        daily 
        missingok 
        rotate 52 
        compress 
        delaycompress 
        notifempty 
        create 640 nginx adm 
        sharedscripts 
        postrotate 
                [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` 
        endscript 
} 

Linux日志管理服务logrotate会定时读取该文件,根据设置按日志大小或天数删除/归档旧日志,创建新日志.

配置说明:
daily: 日志文件每天进行滚动
missingok: 如果找不到这个log档案,就忽略过去
rotate: 保留最进52次滚动的日志
compress: 通过gzip压缩转储以后的日志
delaycompress: 和compress一起使用时,转储的日志文件到下一次转储时才压缩
notifempty 如果是空文件的话,不转储
create mode owner group:转储文件,使用指定的文件模式创建新的日志文件
sharedscripts: 运行postrotate脚本(该脚本作用为让nginx重新生成日志文件)
postrotate/endscript: 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

logrotate默认被加入到cron的/etc/cron.daily中作为每日任务执行,配置定义在:
/etc/cron.daily/logrotate

#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

查看logrotate最近进行了哪些日志归档。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
12月前
|
应用服务中间件 nginx 数据安全/隐私保护
百度搜索:蓝易云【Nginx启动,重启以及基本命令详解!】
请注意,上述命令可能需要在终端中以管理员权限(使用sudo)运行。根据你的系统配置和安装方式,可能会有所不同。确保使用适用于你的系统的正确命令。
151 3
|
3月前
|
应用服务中间件 Linux nginx
让 CentOS 定时重启 Nginx
在CentOS上设置Nginx定时重启可通过`cron`或`systemctl`
208 0
|
2月前
|
缓存 Ubuntu 前端开发
在Ubuntu上手动与自动启动Nginx的踩坑经历、以及重启服务
本文分享了作者在Ubuntu系统上手动和自动启动Nginx服务的踩坑经历,包括创建启动脚本、解决依赖问题、配置服务自动启动以及通过命令行管理Nginx服务的方法。
200 0
在Ubuntu上手动与自动启动Nginx的踩坑经历、以及重启服务
|
4月前
|
NoSQL 关系型数据库 MySQL
linux服务器重启php,nginx,redis,mysql命令
linux服务器重启php,nginx,redis,mysql命令
64 1
|
4月前
|
应用服务中间件 nginx
nginx更改配置文件后重启
nginx更改配置文件后重启
132 1
|
5月前
|
jenkins 应用服务中间件 持续交付
nginx启动、停止和重启(三)
nginx启动、停止和重启
102 0
|
5月前
|
Java jenkins 应用服务中间件
nginx启动、停止和重启(二)
nginx启动、停止和重启
48 0
|
5月前
|
Java jenkins 应用服务中间件
nginx启动、停止和重启(一)
nginx启动、停止和重启
406 0
|
应用服务中间件 nginx
window重启Nginx的BAT脚本
window重启Nginx的BAT脚本
329 0
|
关系型数据库 MySQL 应用服务中间件
nginx启动、重启、关闭
nginx启动、重启、关闭
1314 0
nginx启动、重启、关闭