Nginx突然停止工作,我找不到原因

我有一个复杂的问题,我不知道如何debugging。 在我的prod服务器,我有一个nginx编译从页面速度来源。 一切正常,但有时,我不能识别模式,nginx停止工作,没有任何错误日志中的错误。

error_log /usr/local/nginx/localhost-error.log; 

如果我做HTOP我找不到任何与nginx相关的pid,所以我需要每次手动启动nginx我有这个问题。

 nohup /usr/local/nginx/sbin/nginx & 

否则,nginx工作正常。 我不知道是否重要,但是有时候我会接受基本authentication的powershell攻击,但是我经过3次错误的尝试后却不能使用。

我怎样才能find这个问题的原因?


 nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful nginx version: nginx/1.10.1 

需要更多的信息

没有更多的信息,很难说问题是什么。 只是要抛开一些想法。 编辑您的文章更多的信息,也许我们可以弄明白。

问题

  1. nginx如何运行? 它是使用服务运行还是使用临时方法运行?
    • 如果它由init(upstart,systemd等)运行,它们(通常是?)将logging有关重新启动的进程。 如果没有,您可以查看init作业,并在启动/停止时添加日志打印。
  2. /var/log/syslog是否有任何相关的内容?
  3. 从nginx保存stdout / stderr 。 像这样的东西。 也许你会再次发生一些有趣的事情。 nohup /usr/local/nginx/sbin/nginx >> /var/log/nginx.out 2>&1 &
  4. 运行一个脚本,只要看到nginx死亡就会logging。 然后,您可以使用它将其与系统上的其他事件相关联。

     while true; do NUM_INSTANCES=$(ps -A | grep nginx | wc -l) if [[ "$NUM_INSTANCES" == 0 ]]; then echo "$(date) nginx just died" >> /var/log/syslog fi sleep 1 done 

    您也可以用logging器调用replaceecho 。 我用了一个类似的脚本来debugging我的系统。 只要确保在一个脚本文件而不是一个shell中运行它,所以你可以通过执行killall <scriptname>.sh来杀死它。

此外,nginxdebugging页面上的一些信息可能会有所帮助。 https://www.nginx.com/resources/wiki/start/topics/tutorials/debugging/