1.什么是ulimit?

ulimit次要是用来限度过程对资源的应用状况的,它反对各种类型的限度,罕用的有:

内核文件的大小限度
过程数据块的大小限度
Shell过程创立文件大小限度
可加锁内存大小限度
常驻内存集的大小限度
关上文件句柄数限度
调配堆栈的最大大小限度
CPU占用工夫限度用户最大可用的过程数限度
Shell过程所能应用的最大虚拟内存限度

2.用法

   ulimit应用的根本格局为:ulimit [options] [limit]

具体的options参数含意如下表所示:

选项 含意
-a 显示以后零碎所有的limit资源信息。
-H 设置硬资源限度,一旦设置不能减少。
-S 设置软资源限度,设置后能够减少,然而不能超过硬资源设置。
-c 最大的core文件的大小,以 blocks 为单位。
-f 过程能够创立文件的最大值,以blocks 为单位.
-d 过程最大的数据段的大小,以Kbytes 为单位。
-m 最大内存大小,以Kbytes为单位。
-n 查看过程能够关上的最大文件描述符的数量。
-s 线程栈大小,以Kbytes为单位。
-p 管道缓冲区的大小,以Kbytes 为单位。
-u 用户最大可用的过程数。
-v 过程最大可用的虚拟内存,以Kbytes 为单位。
-t 最大CPU占用工夫,以秒为单位。
-l 最大可加锁内存大小,以Kbytes 为单位。
例如:

查看过程能够关上的最大文件描述符的数量

3.批改用户过程可关上文件数限度
3.1调优
(1)最大过程数

设置各linux 用户的最大过程数,上面我把某linux用户的最大过程数设为10000个:

ulimit -u 10000

(2)可关上的文件数

对于须要做许多 socket 连贯并使它们处于关上状态的 Java 应用程序而言,

 最好通过应用 ulimit -n xx 批改每个过程可关上的文件数,缺省值是 1024。  ulimit -n 4096 

(3)其余倡议设置成无限度(unlimited)的一些重要设置是:

 数据段长度:ulimit -d unlimited  最大内存大小:ulimit -m unlimited  堆栈大小:ulimit -s unlimited  CPU 工夫:ulimit -t unlimited  虚拟内存:ulimit -v unlimited 

3.2 永恒地设置
(1)解除 Linux 零碎的最大过程数和最大文件关上数限度:

vi /etc/security/limits.conf

    # 增加如下的行    * soft noproc 11000    * hard noproc 11000    * soft nofile 4100    * hard nofile 4100

阐明:* 代表针对所有用户,noproc 是代表最大过程数,nofile 是代表最大文件关上数

(2)让 SSH 承受 Login 程式的登入,不便在 ssh 客户端查看 ulimit -a 资源限度:

    a、vi /etc/ssh/sshd_config        把 UserLogin 的值改为 yes,并把 # 正文去掉    b、重启 sshd 服务:          /etc/init.d/sshd restart

(3)批改所有 linux 用户的环境变量文件:

vi /etc/profile

ulimit -u 10000

ulimit -n 4096

ulimit -d unlimited

ulimit -m unlimited

ulimit -s unlimited

ulimit -t unlimited

ulimit -v unlimited