Nginx工作进程未正常重启带来的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx工作进程未正常重启带来的问题相关的知识,希望对你有一定的参考价值。
参考技术A 公司新上线了一个系统,通过nginx进行反向代理,系统上线后,偶尔有请求出现请求找不到,响应 404 的问题。仅新系统会出现该问题,以前部署的系统没有;错误的请求随机出现,并不固定为某个特定的请求地址。Nginx部分配置如下:跟踪日志发现无论全局错误日志还是新系统错误日志中,都没有对应记录,新系统访问日志中只有正常请求的记录,没有错误的记录。错误请求只有在全局访问日志文件中才有记录。最终在查看Nginx进程状态时,竟发现多了4个工作进程。
仔细观察发现多出来的进程是很久以前启动的了,执行 nginx -s reload 命令,异常进程也不会终止,于是猜测错误请求是由异常的进程在处理,而异常的进程是很久以前启动的,并没有加载新系统的配置文件,导致报错,同时这也是为什么错误记录只存在全局访问日志中的原因。 kill 掉异常进程后,果然没有再出现 404 的问题了。
至于Nginx进程出现异常的原因我就没有再深究了,网上有人不建议使用 nginx -s reload 命令重启nginx,有时候会无效,公司Nginx在不久做过升级,或许是升级操作不当导致的也说不定。
Nginx----原理
原理
master-workers的机制的好处
首先,对于每个worker进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多。其次,采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master 进程则很快启动新的worker 进程。当然,worker进程的异常退出,肯定是程序有bug了,异常退出,会导致当前worker 上的所有请求失败,不过不会影响到所有请求,所以降低了风险。
正是由于多个wrok,我们的热部署才可以实现
以上是关于Nginx工作进程未正常重启带来的问题的主要内容,如果未能解决你的问题,请参考以下文章
myeclipse中的weblogic 服务未正常关闭问题解决。