Nginx系列—修改Nginx进程最大可打开文件数(worker_processes和worker_connections)
来源:互联网 发布:网络规划设计师教程pdf 编辑:程序博客网 时间:2024/04/29 02:13
worker_processes:操作系统启动多少个工作进程运行Nginx。注意是工作进程,不是有多少个nginx工程。在Nginx运行的时候,会启动两种进程,一种是主进程master process;一种是工作进程worker process。例如我在配置文件中将worker_processes设置为4,启动Nginx后,使用进程查看命令观察名字叫做nginx的进程信息,我会看到如下结果:
[root@localhost nginx]# ps -elf | grep nginx4 S root 2203 2031 0 80 0 - 46881 wait 22:18 pts/0 00:00:00 su nginx4 S nginx 2204 2203 0 80 0 - 28877 wait 22:18 pts/0 00:00:00 bash5 S root 2252 1 0 80 0 - 11390 sigsus 22:20 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf5 S nobody 2291 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process5 S nobody 2292 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process5 S nobody 2293 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process5 S nobody 2294 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process0 R root 2312 2299 0 80 0 - 28166 - 22:24 pts/0 00:00:00 grep --color=auto nginx
图中可以看到1个nginx主进程,master process;还有四个工作进程,worker process。主进程负责监控端口,协调工作进程的工作状态,分配工作任务,工作进程负责进行任务处理。一般这个参数要和操作系统的CPU内核数成倍数。
worker_connections:这个属性是指单个工作进程可以允许同时建立外部连接的数量。无论这个连接是外部主动建立的,还是内部建立的。这里需要注意的是,一个工作进程建立一个连接后,进程将打开一个文件副本。所以这个数量还受操作系统设定的,进程最大可打开的文件数有关。
设置Nginx进程最大可打开文件数
1、更改操作系统级别的“进程最大可打开文件数”的设置
Linux问题—设置“进程最大可打开的文件数”永久有效的方式。
2、更改Nginx软件级别的“进程最大可打开文件数”的设置
刚才更改的只是操作系统级别的“进程最大可打开文件”的限制,作为Nginx来说,我们还要对这个软件进行更改。打开nginx.conf主配置文件。您需要配合worker_rlimit_nofile属性。如下:
user root root;
worker_processes 4;
worker_rlimit_nofile 65535;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;
events {
use epoll;
worker_connections 65535;
}
这里只粘贴了部分代码,其他的配置代码和主题无关,也就不需要粘贴了。请注意代码行中加粗的两个配置项,请一定两个属性全部配置。配置完成后,请通过nginx -s reload命令重新启动Nginx。
3、验证Nginx的“进程最大可打开文件数”是否起作用
那么我们如何来验证配置是否起作用了呢?在linux系统中,所有的进程都会有一个临时的核心配置文件描述,存放路径在 /pro/进程号/limit。
首先我们来看一下,没有进行参数优化前的进程配置信息:
[root@localhost nginx]# ps -elf | grep nginx4 S root 2203 2031 0 80 0 - 46881 wait 22:18 pts/0 00:00:00 su nginx4 S nginx 2204 2203 0 80 0 - 28877 wait 22:18 pts/0 00:00:00 bash5 S root 2252 1 0 80 0 - 11390 sigsus 22:20 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf5 S nobody 2291 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process5 S nobody 2292 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process5 S nobody 2293 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process5 S nobody 2294 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process0 R root 2318 2299 0 80 0 - 28166 - 22:42 pts/0 00:00:00 grep --color=auto nginx
可以看到,nginx工作进程的进程号是:2291 2292 2293 2294。我们选择一个进程,查看其核心配置信息:
[root@localhost nginx]# cat /proc/2291/limitsLimit Soft Limit Hard Limit UnitsMax cpu time unlimited unlimited secondsMax file size unlimited unlimited bytesMax data size unlimited unlimited bytesMax stack size 8388608 unlimited bytesMax core file size 0 unlimited bytesMax resident set unlimited unlimited bytesMax processes 3829 3829 processesMax open files 1024 4096 filesMax locked memory 65536 65536 bytesMax address space unlimited unlimited bytesMax file locks unlimited unlimited locksMax pending signals 3829 3829 signalsMax msgqueue size 819200 819200 bytesMax nice priority 0 0Max realtime priority 0 0Max realtime timeout unlimited unlimited us
请注意其中的Max open files ,分别是1024和4096。那么更改配置信息,并重启Nginx后,配置信息就是下图所示了:
[root@localhost conf]# cat /proc/2351/limitsLimit Soft Limit Hard Limit UnitsMax cpu time unlimited unlimited secondsMax file size unlimited unlimited bytesMax data size unlimited unlimited bytesMax stack size 8388608 unlimited bytesMax core file size 0 unlimited bytesMax resident set unlimited unlimited bytesMax processes 3829 3829 processesMax open files 65535 65535 filesMax locked memory 65536 65536 bytesMax address space unlimited unlimited bytesMax file locks unlimited unlimited locksMax pending signals 3829 3829 signalsMax msgqueue size 819200 819200 bytesMax nice priority 0 0Max realtime priority 0 0Max realtime timeout unlimited unlimited us
- Nginx系列—修改Nginx进程最大可打开文件数(worker_processes和worker_connections)
- nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile
- nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile
- [Nginx]并发数问题思考:worker_connections,worker_processes与 max clients
- nginx 并发数问题思考:worker_connections,worker_processes与 max clients
- nginx中关于并发数的问题worker_connections,worker_processes
- nginx 优化系列之worker_connections
- nginx 优化系列之worker_connections
- nginx 优化系列之worker_connections
- 【nginx】优化系列之worker_connections
- 进程可打开的最大文件数和目录下的最大文件数
- CentOS7修改单个进程可打开的最大文件句柄数
- CentOS修改ulimit(最大进程数和最大文件打开数)
- CentOS修改ulimit(最大进程数和最大文件打开数)
- CentOS修改ulimit(最大进程数和最大文件打开数)
- 修改linux文件最大进程数和文件打开数
- 修改用户进程可打开文件数限制
- 修改用户进程可打开文件数限制
- 数组循环删除
- 走近传说中的天才,拨开神话面纱,学习解决问题的方法
- 并查集问题扩展 poj 1703
- 原生js实现AJAX(一)
- MySQL入门之事件
- Nginx系列—修改Nginx进程最大可打开文件数(worker_processes和worker_connections)
- redis数据库配置详解
- es6模板字符串中标签模板作为参数时产生空元素的问题
- 分享一套经典的前端面试题
- Spring自定义标签示例(亲测可运行)
- 素数筛选法
- 常用正则表达式总结
- eth0 eth0:1 eth0.1 的区别
- WebGL之旅(七)varying变量