Nginx核心worker_processes、worker_connections设置

Nginx核心worker_processes、worker_connections设置,第1张

worker_processes与worker_connections 设置好合适大小可以提高nginx处理性能,所以非常重要。

原作者的话

翻译

一般一个进程足够了,你可以把连接数设得很大。如果有SSL、gzip这些比较消耗CPU的工作,而且是多核CPU的话,可以设为和CPU的数量一样。或者要处理很多很多的小文件,而且文件总大小比内存大很多的时候,也可以把进程数增加,以充分利用IO带宽(主要似乎是IO操作有block)。

数字越大,能同时处理的连接越多

根据系统的最大打开文件数来调整,worker_connections进程连接数量要小于等于系统的最大打开文件数,worker_connections进程连接数量真实数量= worker_connections*worker_process

查看系统的最大打开文件数

从用户的角度,http 1.1协议下,由于浏览器默认使用两个并发连接,因此计算方法:

物理CPU个数

逻辑CPU个数:(核数)

每个物理CPU中Core的个数:

查看CPU型号

阿里云折扣快速入口

参考资料

nginx 并发数问题思考:worker_connections,worker_processes与 max clients

方法/步骤

worker_rlimit_nofile用于指定一个nginx进程可以打开的最多文件描述符数目,这里是65535,需要使用命令“ulimit -n 65535”来设置。

worker_connections也是个事件模块指令,用于定义Nginx每个进程的最大连接数,默认是1024.最大客户端连接数由worker_processes和worker_connections决定,即Max_client=worker_processes*worker_connections,在作为反向代理时,max_clients变为:max_clients = worker_processes * worker_connections/4。进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效。

3

一个nginx进程最多可以承受多少客户端同时来进行连接,并且这个进程可以打开的最多文件数,如果一个nginx有100个客户端来连接,但这个进程只能打开50个文件,也是不行的

4

在工作方式上,Nginx分为单工作进程和多工作进程两种模式。在单工作进程模式下,除主进程外,还有一个工作进程,工作进程是单线程的;在多工作进程模式下,每个工作进程包含多个线程。Nginx默认为单工作进程模式。

nginx -s reload之后, nginx 正在平滑的重启。

wroker有正在处理的连接,等处理结束,该worker就会退出(退出之前,该worker不会处理新的连接)。

等调用对应nginx 的进程结束之后,这个process就会重启了。

大约20分钟后,这些进程都变成了 'worker process' 了。

使用nginx作为前端代理,在reload nginx的时候,发现nginx会一直处于shutting状态,当reload nginx次数多了以后,cup会飙升到100%, gateway的状态也会处于busy状态。

现象如下:

跟踪socket连接发现,此 nginx 进程,一直保持跟gateway的连接。

当nginx reload的次数多的时候,gateway就会处于busy状态。

如果把gateway restart了,gateway的进程id会改变,nginx中的shutting down 状态的进程也会消失,但是gateway restart就断掉和客户端的连接了。

看起来nginx reload后不会断开连接,然后gateway reload也不会断开连接(gateway restart会断开连接),

然后二者仍然保持着连接。

nginx和gateway都reload,那么nginx会产生新的worker进程,但是应该shutdown的老进程因为和gateway还有连接,所以也不会销毁,这样时间长了会有很多处于shutting状态的进程,这些进程都会占用资源。

重启的话就会把客户端的连接断开重连,会把连接初始化时给客户端发送的消息重新发一遍。

nginx worker shutting down状态超时退出配置

nginx reload之后有时会遇到shutting down状态worker过多的现象,尤其是websocket连接的worker很长时间无法退出。

如何解决过多worker长时间处于shutting down状态,不退出问题呢?

使用worker_shutdown_timeout配置,该配置配置在MAIN_CONF中,配置参数为时间。

如配置为1h,shutting down状态的worker一小时之后自动退出。

谈谈 nginx 信号集

http://io.upyun.com/2017/08/19/nginx-signals

nginx: worker process is shutting down

https://www.cnblogs.com/felixzh/p/8670770.html

http://siwei.me/blog/posts/nginx-worker-is-shutting-down

worker_shutdown_timeout

https://nginx.org/en/docs/ngx_core_module.html#worker_shutdown_timeout

是什么让你的 nginx 服务退出这么慢?

https://zhuanlan.zhihu.com/p/34792840

从websocket服务的nginx配置说起

https://echizen.github.io/tech/2018/10-21-nginx-websocket

我眼里的 nginx

https://www.zhihu.com/column/nginxio

如何优雅地关闭worker进程?

https://blog.csdn.net/qq_27276045/article/details/103645876

https://blog.csdn.net/error311/article/details/104712237

https://cloud.tencent.com/developer/article/1558426

一次百万长连接压测Nginx内存溢出问题

https://www.51cto.com/article/612789.html

DevOps nginx: worker process is shutting down 原因解析

https://www.dazhuanlan.com/freelock/topics/1500064

nginx处理websocket连接

https://blog.csdn.net/weixin_43931358/article/details/111039750

NGINX as a WebSocket Proxy

https://www.nginx.com/blog/websocket-nginx

Nginx does not shut down when websocket connections are still open

https://github.com/phusion/passenger/issues/2211

nginx的graceful shutdown和worker shutdown timeout

https://cloud.tencent.com/developer/article/1162090

worker_shutdown_timeout 指令

https://www.hxstrive.com/subject/nginx.htm?id=785&p=757

关于k8s下使用Ingress保持长连接的异常情况排查

https://blog.jobshen.com/posts/eee2bd13.html

nginx热加载时已建立的websocket连接是否中断?

https://mp.weixin.qq.com/s/Nn44qLLQmJnzH-JLu_I-VA

Nginx reload了,连接怎么办?

https://mp.weixin.qq.com/s/i7DBCKF-ZouBihFEZKB6YQ

worker_shutdown_timeout" directive did not work websocket

https://github.com/Miss-you/apisix-book/issues/57

worker_shutdown_timeout(seconds) - Set the timeout for worker shutdown

https://docs.contrastsecurity.com/en/configure-with-puma.html


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/53625.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-25
下一篇2023-02-25

发表评论

登录后才能评论

评论列表(0条)

    保存