1

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


zed2015
15 声望2 粉丝