zoukankan      html  css  js  c++  java
  • nginx for windows中的一项缺陷

    按照官网上的说法,使用 start nginx 启动 nginx,使用 nginx -s quit 可以优雅地退出。

    经实验,使用 start nginx 之后,会启动两个 nginx 的进程,据官网上说,一个是控制进程,一个是工作进程(One of the processes is the master process and another is the worker process.)。

    当我们启动进程之后,现在 nginx 可以开始工作了,但当我们再次使用 start nginx 之后,会发现又启动了两个进程。

    现在我们使用 nginx -s quit 命令,会发现还剩下两个进程,再使用 nginx -s quit,会报错啊。。。,但其实现在还有两个 nginx.exe 进程。使用 nginx -s reload 呢,也会报错。

    存在这种现象导致的问题就是,如果我不小心使用了两次 start nginx,那实际在监听 80 端口(或者是其它端口)的是第一次启动的,所以当我修改了配置文件,然后 nginx -s reload,会发现对配置文件的修改并没有起作用。然后使用 nginx -s quit 来优雅地退出,会发现 nginx 竟然还能用。

    解决方法是使用 taskkill命令强制终止进程。

    为什么会出现这种问题呢,观察+猜测一下吧:

    当使用 start nginx 命令之后,会产生 ./logs/nginx.pid 这个文件,文件中记录了 nginx.exe 的pid,当重复使用 start nginx 时,nginx.pid 中的内容会被后来者替换,这样 nginx.exe 就不知道之前启动的那些自己的进程的 pid 是什么了。之前启动的那些 nginx.exe 的进程已经被 nginx.exe 抛弃了(还被系统领养着,#_#)。

  • 相关阅读:
    介绍下自己的Delphi学习环境
    我所理解的Delphi中的数组类型
    字符串的基本操作
    以太网网络变压器的作用
    S3C2416 2D加速
    DM9000AEP调试的时候注意事项
    设置activity背景图片
    如何從現有的share library開發!?
    struct mntent linux挂载信息读取
    Qt中Qstring,char,int,QByteArray之间到转换
  • 原文地址:https://www.cnblogs.com/vanwoos/p/4854538.html
Copyright © 2011-2022 走看看