1、定义
在linux系统中对于进程会有一些限制,这就是所谓的limit,在实际应用中比较常见的就是对打开文件(open files)的限制,在配置nginx服务器会用到。
2、分类
这些限制分为软限制(soft limit)和硬限制(hard limit)。它们的区别就是软限制可以在程序的进程中自行改变(突破限制),而硬限制不行(除非程序进程有root权限)。使用ulimit命令可以分别查看软限制和硬限制,只要在查看的参数前面加S(软限制)和H(硬限制)即可。
3、参数
-a:显示当前所有的资源限制
-c size:设置core文件的最大值(单位:blocks)
-d size:设置数据段的最大值(单位:kbytes)
-f size:设置创建文件的最大值(单位:blocks)
-l size:设置在内存中锁定进程的最大值(单位:kbytes)
-m size:设置可以使用的常驻内存的最大值(单位:kbytes)
-n size:设置内核可以同时打开的文件描述符的最大值(单位:n)
-p size:设置管道缓冲区的最大值(单位:kbytes)
-s size:设置堆栈的最大值(单位:kbytes)
-t size:设置CPU使用时间的最大上限(单位:seconds)
-v size:设置虚拟内存的最大值(单位:kbytes)
-u size:设置最大进程数
4、建议设置成unlimited的一些重要设置
数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited
CPU时间:ulimit -t unlimited
虚拟内存:ulimit -v unlimited
5、举例
通过ulimit -n命令可以查看linux系统打开文件描述符的最大值,一般缺省值是1024,对一台繁忙的服务器来讲,这个值偏小,所以有必要重新设置这个值。
1)临时生效:
这个值可以用ulimit命令来修改。如:ulimit -n 65535。但是这样设置之后,只会对当前登录shell有效,系统重启或者用户退出后就会失效。
2)永久生效:
编辑/etc/security/limits.conf,追加以下内容
其中 * 代表所有用户
重新登录,通过ulimit -a或者ulimit -n 查看是否生效