先说说这篇笔记的前因后果,今天在看nginx的worker_connections配置时,提到操作系统的最大啊文件句柄数,所以就查了一下ulimit这个命令的使用方法。
首先,咱们先说说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就是操作系统支持打开的最大文件句柄数,我们可以看一下我的系统支持的最大文件句柄数。
那么如何修改这个数字呢,我们可以打开文件/etc/security/limits.conf进行配置。例如:
当打开的文件数介于1~soft设定的值,能够正常访问;如果打开的文件句柄数介于soft~hard之间,可以访问但是会有警告;如果打开的文件句柄数大于hard这个数字时,会出现报错。
为了让修改的配置文件生效,需要重启系统:shutdown -r now。然后再执行ulimit -n时,支持的最大打开文件句柄数就会发生了变化。