ulimit:控制shell程序的资源(ulimit为shell内建指令,可用来控制shell执行程序的资源)
参数:
-a 显示目前资源限制的设定。
-c <core文件上限> 设定core文件的最大值,单位为区块。
-d <数据节区大小> 程序数据节区的最大值,单位为KB。
-f <文件大小> shell所能建立的最大文件,单位为区块。
-H 设定资源的硬性限制,也就是管理员所设下的限制。
-m <内存大小> 指定可使用内存的上限,单位为KB。
-n <文件数目> 指定同一时间最多可打开的文件数。
-p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。
-s <堆栈大小> 指定堆叠的上限,单位为KB。
-S 设定资源的弹性限制。
-t <CPU时间> 指定CPU使用时间的上限,单位为秒。
-u <进程数目> 用户最多可启动的进程数目。
-v <虚拟内存大小> 指定可使用的虚拟内存上限,单位为KB。
**************************************
有如下三种修改方式:
1.在/etc/rc.local 中增加一行 ulimit -SHn 65535
2.在/etc/profile 中增加一行 ulimit -SHn 65535
3.在/etc/security/limits.conf 的最后增加如下两行记录(*号不能少,代表针对所有用户)
* soft nofile 65535
* hard nofile 65535
由于没有那么多系统可以尝试,网上有说在CentOS系统中使用第一种方式无效,使用第三种方式有效,而在Debian中使用第二种方式有效。(方法列出了,这个大家可以自己尝试)
通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件,如:
1) 解除 Linux 系统的最大进程数和最大文件打开数限制:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
说明:* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
2) 修改所有 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
**************************************
大多时候程序里需要打开多个文件,系统一般默认数量是1024,
(用ulimit -a可以看到)对于正常使用是够了,但是对于大型项目来讲,就太少了。
修改下面两个文件:
1) /etc/security/limits.conf
vi /etc/security/limits.conf
在最后加上:
* soft nofile 100000
* hard nofile 100000
2) /etc/pam.d/login
session required /lib/security/pam_limits.so
另外确保/etc/pam.d/system-auth文件有下面内容:
session required /lib/security/$ISA/pam_limits.so
用法:
ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大 小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆栈大小>][-t <CPU时间>][-u <程序数目>][-v <虚拟内存大小>]
参数:
-a 显示目前资源限制的设定。
-c <core文件上限> 设定core文件的最大值,单位为区块。
-d <数据节区大小> 程序数据节区的最大值,单位为KB。
-f <文件大小> shell所能建立的最大文件,单位为区块。
-H 设定资源的硬性限制,也就是管理员所设下的限制。
-m <内存大小> 指定可使用内存的上限,单位为KB。
-n <文件数目> 指定同一时间最多可打开的文件数。
-p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。
-s <堆栈大小> 指定堆叠的上限,单位为KB。
-S 设定资源的弹性限制。
-t <CPU时间> 指定CPU使用时间的上限,单位为秒。
-u <进程数目> 用户最多可启动的进程数目。
-v <虚拟内存大小> 指定可使用的虚拟内存上限,单位为KB。
**************************************
通过ulimit -n命令可以查看linux系统里打开文件描述符的最大值,新装的linux默认只有1024,当作负载较大的服务器时,很容易遇到error: too many open files。因此,有必要重新设置linux系统里打开文件描述符的最大值。
使用 ulimit -n 65535 可即时修改,但重启后就无效了。(注ulimit -SHn 65535 等效 ulimit -n 65535,-S指soft,-H指hard)
那么应该在哪里设置呢?
有如下三种修改方式:
1.在/etc/rc.local 中增加一行 ulimit -SHn 65535
2.在/etc/profile 中增加一行 ulimit -SHn 65535
3.在/etc/security/limits.conf 的最后增加如下两行记录(*号不能少,代表针对所有用户)
* soft nofile 65535
* hard nofile 65535
由于没有那么多系统可以尝试,网上有说在CentOS系统中使用第一种方式无效,使用第三种方式有效,而在Debian中使用第二种方式有效。(方法列出了,这个大家可以自己尝试)
通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件,如:
1) 解除 Linux 系统的最大进程数和最大文件打开数限制:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
说明:* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
2) 修改所有 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
**************************************
大多时候程序里需要打开多个文件,系统一般默认数量是1024,
(用ulimit -a可以看到)对于正常使用是够了,但是对于大型项目来讲,就太少了。
修改下面两个文件:
1) /etc/security/limits.conf
vi /etc/security/limits.conf
在最后加上:
* soft nofile 100000
* hard nofile 100000
2) /etc/pam.d/login
session required /lib/security/pam_limits.so
另外确保/etc/pam.d/system-auth文件有下面内容:
session required /lib/security/$ISA/pam_limits.so
这一行确保系统会执行这个限制。
本文参考:点击打开链接
本文参考:点击打开链接