ulimit
是用来限制进程对资源的使用的,系统里面的默认值在高流量,大并发的服务器上很可能会限制机器硬件性能的发挥。常见的错误很能是too many open files
。为了发挥机器的硬件性能,我们都会修改一些默认值。
通过ulimit -a
命令可以查看相关的值。注意每个系统的默认值是不一样的。我的操作系统是centos7。
ulimit -a
的输出结果如下,我在关键信息后面都标注了解释。
1 | core file size (blocks, -c) 0 # |
一般压制机器性能的是open files
跟max user processes
项。修改这两项的方法如下(需要sudo权限):
修改 open files
vim /etc/security/limits.conf
在文件中添加如下内容。1
2
3
4* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
修改max user processes
vim /etc/security/limits.d/20-nproc.conf
修改 nproc
的值为65535。
注意 centos7下面是20-nproc.conf
,不同操作系统版本文件名称不一样
重新登录shell, 用ulimit -Hn和ulimit -Sn确认修改已生效.
一点点说明:
/etc/security/limits.d/
里面的文件里面的配置会覆盖/etc/security/limits.conf
的配置,也就是说limits.d
目录下的配置文件优先级更高。nproc
: 是操作系统级别对每个用户创建的进程数的限制nofile
: 是每个进程可以打开的文件数的限制- 第一列表示用户,* 表示所有用户
- 这些修改最好在拿到机器就修改,如果是应用已经跑起来了在修改这些值,需要把应用进行重启操作。