nginx重启命令reload后进程会变吗(nginx修改了配置文件需要重启吗)

nginx重启命令reload后进程会变吗(nginx修改了配置文件需要重启吗)

扫码添加渲大师小管家,免费领取渲染插件、素材、模型、教程合集大礼包!

大家好,今天来介绍nginx重启命令reload后进程会变吗(nginx工作进程未正常重启带来的问题有哪些)的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!

nginx 修改配置需要重启吗

修改完nginx配置后,需要使用nginx -s reload
使修改扮塌的配置生效,配厅碧圆置生效是平滑的慧稿,不会对访问产生任何影响
reload后会启动新的进程接受新请求,对于未处理完的请求还是用老的配置,直到请求处理完毕,老的进行会退出

Nginx工作进程未正常重启带来的问题

        公司新上线了一个系统,通过Nginx进行反向代理,系统上线后,偶尔有请求出现请求找不到,响应 404 的问题。仅新系统会出现该问题,以前部署的系统没有;错误的请求随机出现,并不固定为某个特定的请求地址。Nginx部分配置如下:

        跟踪日志发现无论全局错误日志还是新系统错误日志中,都没有对应记录,新系统访问日志中只有正常请求的记录,没有错误的记录。错误请求只有在全局访问日志文件中才有记录。最终在查看Nginx进程状态时,竟发现多了4个工作进程。

        仔细观察发现多出来的进程是很久以前启动的了,执行 nginx -s reload 命令,异常进程也不会终止,于是猜测错误请求是由异常的进程在处理,而异常的进程是很久以前启动的,并没有加载新系统的配置文件,导致报错,同时这也源简是为什么错误记录只存在全局访问日志中的原因。 kill 掉异常进程后,果然没有再出现 404 的问题了。

        至于Nginx进程出现异常的原因我就没有再深究了,网上有人不建议使用 nginx -s reload 命令重启nginx,有时候会雹升裤无效,公司Nginx在不久做过升级,或许是升级操作不当导致的也说不定。笑简

nginx重载原理

nginx重载原理是:向master进程发送HUP信号(reload命令)、master进程检查配置语法是否正确master进程打开监听端口(在修改配置文件的端口情况下,可能)。

master进程使用新的配置文件启动新的worker子进程,master进程向老的worker子进程发送QUIT信号,旧的worker进程关闭监听句柄,处理完当前连接后关闭进程。

左边绿色的状态是执行nginx -s reload命令之前的状态,按照我个人主机的配置时一个master进程和4个worker子进程。

为了模拟执行nginx -s reload命令后原来的worker进程会处理完请求后再被杀掉,我模拟一个需要很久才能处理完任务并响应的接口。

是的在代码里sleep 15秒,也就是说渗橘掘这个接口响应需要15秒,时间弄长点方便我们来观察中间态,注意,伍笑在执行reload命令前请求该接口。

nginx的模块是:

Nginx的模块从结构上分为核心模块、基础模块和第三方模块:

核心模块:HTTP模块、EVENT模块和MAIL模块。

基础模块:HTTP Access模块、HTTP FastCGI模块丛核、HTTP Proxy模块和HTTP Rewrite模块。

第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。

linux下如何重启nginx

在nginx的早期版本,nginx重启需要通过kill命令向nginx发送信号来实现nginx的重启。
但是,现在,nginx增加了-s选项,实现nginx的停止,重新加载功能。
1. 如果是平滑的重启nginx,可以用./nginx -s reload命令实现nginx的平滑重启。
2. 如果是非平滑重启,则可以先停止nginx,然后再启动:
./nginx -s stop && ./nginx

当我们修改nginx配置后,希望重启nginx以激陵便让nginx生效,此时为了保证nginx在重启阶段还能够提供正常的服务,芹卖一般采用平滑重启的方式(reload)重启nginx。此时,nginx会加载新的配置,然后fork出新的worker进程。同时,master进程会向老的worker进程发送信号,告诉老的worker进程当前的情况。老的worker进程受到master进程的信号后,如果当时没有处理请求则会退出,如果正在处理请求,则老的worker进程会处理完请求然后退出。nginx就是通过这种方式去reload新的配置,嫌铅逗从而使得在重启的过程中,仍然可以提供服务。

centos7 下 nginx 启动关闭重启配置

打开这个教程: EA82.COM

启动 nginx

systemctl start nginx

一旦 nginx 启动后,就可以用nginx -s signal 命令来接管

快梁凯速关闭 nginx

nginx -s stop

平滑的关闭 nginx

nginx -s quit

重启 nginx

nginx -s reload

分割日志

nginx -s reopen

nginx 的工作原理

nginx 有一个 master 进程(老板)和多个 worker 进程(工人),master 进程负责阅读和评估配置,给 worker 进程提供保障,worker 进程实际处理请求。

nginx -s  reload 命令加载修改后的配置文雀启件, 命令下达后发生如下事件

Nginx 的 master 进程检查配置文件的正确性,若是错误则返回错误信息,nginx 继续采用原配置文件进行工作(因为 worker 未受到影响)

Nginx 启动新的 worker 进程,采用新的配置文件

Nginx 将新的请橡岁唤求分配新的 worker 进程

Nginx 等待以前的 worker 进程的全部请求已经都返回后,关闭相关 worker 进程

重复上面过程,直到全部旧的 worker 进程都被关闭掉。

nginx -s quit命令关闭 nginx 服务时,nginx 服务要等待工作进程将当前请求处理完才关闭。

也可以用 kill 命令杀死指定进程号的 nginx 进程

先通过 /var/run/nginx.pid 文件查看 nginx master 进程进程 id,

或者通过ps -axgrep nginx查看进程

在使用kill -s quit 进程号 杀死进程

分享到 :
相关推荐

免费云服务器租用有哪些优势(免费云服务器租用有哪些优势和劣势)

免费云服务器租用的优势有:1。整体性能好。能获取更强大的计算能力;2。采购成本低。能...

国外高速服务器是如何实现加快在国内的访问速度(海外服务器国内访问加速)

由于地理位置的原因。一般来讲国外服务器在国内的访问速度肯定是没有那么快速的。通常到国...

iis管理器怎么打开(怎么打开iis信息服务器)

大家好,今天来介绍iis管理器怎么打开(怎么打开iis管理器的文件)的问题,以下是渲...

bitlocker有必要启用吗(硬盘锁bitlocker有什么用)

大家好,今天来介绍bitlocker有必要启用吗(bitlocker有用吗?)的问题...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注