Nginx-504 Gateway Time-out排查及解决方案-阿里云开发者社区

开发者社区> 开发与运维> 正文

Nginx-504 Gateway Time-out排查及解决方案

简介:   前段时间碰到了一个调用服务失去响应的问题,服务是采用Java开发,部署在Tomcat上,前端使用Nginx做代理,但是通过Nginx调用服务的时候一直报504 Gateway Time-out错误,跨过Nginx直接调用服务又正常,所有锁定错误和Nginx有关,后经排查发现是Nginx的日志过大,将存储盘空间占满了,导致自身日志不能正常写入。

  前段时间碰到了一个调用服务失去响应的问题,服务是采用Java开发,部署在Tomcat上,前端使用Nginx做代理,但是通过Nginx调用服务的时候一直报504 Gateway Time-out错误,跨过Nginx直接调用服务又正常,所有锁定错误和Nginx有关,后经排查发现是Nginx的日志过大,将存储盘空间占满了,导致自身日志不能正常写入。因为Nginx的日志自身没有最大值限制,不会覆盖和拆分。
  为了解决Nginx日志增长占满磁盘的问题,想到了将日志拆分删除,每天0点拆分日志,最多保留7天的日志文件。

  • 新建一个nginx-log-manage.sh,写入如下内容:
# Directory of nginx log files
LOGS_PATH=/usr/local/nginx/logs
DAYS=7
  
# get yesterday date format as yyyy-MM-dd  
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)  
  
# move log files  
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log  
  
# 
kill -USR1 $(cat ${LOGS_PATH}/nginx.pid)

# delete 7 days ago nginx log files
find $LOGS_PATH -mtime +$DAYS -exec rm -rf {} \;

同时增加一个Linux定时任务,注意文件的位置,每天0点执行该批处理文件

echo "0 0 * * * root /usr/local/nginx/sbin/nginx-log-manage.sh" >> /etc/crontab

然后过几天观察,Nginx的日志就按日期拆分了

img_7c263c41886594fd930d1d73bc701daa.png
Nginx log

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章