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