先说说这篇笔记的前因后果,今天在看nginx的worker_connections配置时,提到操作系统的最大啊文件句柄数,所以就查了一下ulimit这个命令的使用方法。

nginx设置log nginx设置最大连接数_文件句柄

首先,咱们先说说worker_connections这个配置的含义。这个配置项是在events模块中进行配置,主要用来设置允许每一个worker process 同时开启的最大连接数。其语法结构如下:

worker_connections number; 

此指令的默认设置为512;这里的number不仅仅包括和前端用户建立的连接数,而是包括所有可能的连接数。另外number的值不能大于操作系统支持打开的最大文件句柄数。

上面标红的地方就是引出本文的缘由----》ulimit 的使用方法

ulimit命令用于控制shell程序的资源

命令

说明

-a

显示目前资源限制的设定

-c

设定core文件的最大值,单位为区块

-f

shell所能建立的最大文件,单位为区块

-d

程序数据节区的最大值,单位为KB

-H

设定资源的硬性限制,也就是管理员所设下的限制

-m

指定可使用内存的上限,单位为KB

-n

指定同一时间最多可开启的文件数

-p

指定管道缓冲区的大小,单位是512字节

-s

指定堆叠的上限,单位为KB

-S

设定资源的弹性限制

-t

指定cpu使用时间的上限,单位为秒

-u

用户最多可开启的程序数目

-v

指定可使用的虚拟内存上限,单位为KB

其中-n就是操作系统支持打开的最大文件句柄数,我们可以看一下我的系统支持的最大文件句柄数。

nginx设置log nginx设置最大连接数_nginx设置log_02

  那么如何修改这个数字呢,我们可以打开文件/etc/security/limits.conf进行配置。例如:

nginx设置log nginx设置最大连接数_文件句柄_03

当打开的文件数介于1~soft设定的值,能够正常访问;如果打开的文件句柄数介于soft~hard之间,可以访问但是会有警告;如果打开的文件句柄数大于hard这个数字时,会出现报错。

为了让修改的配置文件生效,需要重启系统:shutdown -r now。然后再执行ulimit -n时,支持的最大打开文件句柄数就会发生了变化。