linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,使用ulimit设置各linux 用户的最大进程数。可以用ulimit -a 来显示当前的各种用户进程限制。
例如,把某linux用户的最大进程数设为10000个:
ulimit -u 10240
对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,
最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。
ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024
其他建议设置成无限制(unlimited)的一些重要设置是:
暂时地,适用于通过 ulimit 命令登录 shell 会话期间。
永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件。
例如:
1)、让 SSH 接受 Login 程式的登入,方便在 ssh 客户端查看 ulimit -a 资源限制:
a、vi /etc/ssh/sshd_config
把 UserLogin 的值改为 yes,并把 # 注释去掉
b、重启 sshd 服务:
/etc/init.d/sshd restart
2)、解除 Linux 系统的最大进程数和最大文件打开数限制:
vi /etc/security/limits.conf
# 添加如下的行
说明:* 代表针对所有用户,noproc 是代表最大进程数,nofile 是代表最大文件打开数
3)、修改所有 linux 用户的环境变量文件:
vi /etc/profile
保存后运行#source /etc/profile 使其生效
有时程序中需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。
修改2个文件。
1./etc/security/limits.conf
vi /etc/security/limits.conf
加上:
2./etc/pam.d/login
另外,确保/etc/pam.d/system-auth文件有下面内容
session required /lib/security/$ISA/pam_limits.so
这一行确保系统会执行这个限制。
3.一般用户的.bash_profile
#ulimit -n 1024
重新登录即可。
以下介绍ulimit 的作用。
ulimit:显示(或设置)用户可以使用的资源的限制(limit),这限制分为软限制(当前限制)和硬限制(上限),其中硬限制是软限制的上限值,应用程序在运行过程中使用的系统资源不超过相应的软限制,任何的超越都导致进程的终止。
参数 描述
ulimited 不限制用户可以使用的资源,但本设置对可打开的最大文件数(max open files)
和可同时运行的最大进程数(max user processes)无效
例1:
输出的每一行由资源名字、(单位,ulimit命令的参数)、软限制组成。详细解释:
例2:通过ulimit命令来限制文件的大小,从而导致拷贝命令的失败
文件a.c的大小是5002字节,而我们设定的创建文件的大小是512字节x1块=512字节
1、修改用户进程可打开文件数限制
推荐阅读:在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因為系统為每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:
这表示当前用户的每个进程最多允许同时打开1024个文件,这1024个文件中还得除去每个进程必然打开的标準输入,标準输出,标準错误,服务器监听socket,进程间通讯的unix域socket等文件,那麼剩下的可用於客户端socket连接的文件数就只有大概1024-10=1014个左右。也就是说缺省情况下,基於Linux的通讯程序最多允许同时1014个TCP并发连接。
对於想支持更高数量的TCP并发连接的通讯处理程序,就必须修改Linux对当前用户的进程同时打开的文件数量的软限制(soft limit)和硬限制(hardlimit)。其中软限制是指Linux在当前系统能够承受的范围内进一步限制用户同时打开的文件数;硬限制则是根据系统硬件资源状况(主要是系统内存)计算出来的系统最多可同时打开的文件数量。通常软限制小於或等於硬限制。