本文共 2500 字,大约阅读时间需要 8 分钟。
ulimit:显示(或设置)用户可以使用的资源的限制(limit),这限制分为软限制(当前限制)和硬限制(上限),其中硬限制是软限制的上限值,应用程序在运行过程中使用的系统资源不超过相应的软限制,任何的超越都导致进程的终止。
参数 描述
ulimited 不限制用户可以使用的资源,但本设置对可打开的最大文件数(max open files)和可同时运行的最大进程数(max user processes)无效
-a 列出所有当前资源极限-c 设置core文件的最大值.单位:blocks-d 设置一个进程的数据段的最大值.单位:kbytes-f Shell 创建文件的文件大小的最大值,单位:blocks-h 指定设置某个给定资源的硬极限。如果用户拥有 root 用户权限,可以增大硬极限。任何用户均可减少硬极限-l 可以锁住的物理内存的最大值-m 可以使用的常驻内存的最大值,单位:kbytes-n 每个进程可以同时打开的最大文件数-p 设置管道的最大值,单位为block,1block=512bytes-s 指定堆栈的最大值:单位:kbytes-S 指定为给定的资源设置软极限。软极限可增大到硬极限的值。如果 -H 和 -S 标志均未指定,极限适用于以上二者-t 指定每个进程所使用的秒数,单位:seconds-u 可以运行的最大并发进程数-v Shell可使用的最大的虚拟内存,单位:kbytes-x
添加格式
username|@groupname type resource limit
core - 限制内核文件的大小(kb)date - 最大数据大小(kb)fsize - 最大文件大小(kb)memlock - 最大锁定内存地址空间(kb)nofile - 打开文件的最大数目rss - 最大持久设置大小(kb)stack - 最大栈大小(kb)cpu - 以分钟为单位的最多CPU 时间noproc - 进程的最大数目as - 地址空间限制maxlogins - 此用户允许登录的最大数目
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数
ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024 其他建议设置成无限制(unlimited)的一些重要设置是: 数据段长度:ulimit -d unlimited 最大内存大小:ulimit -m unlimited 堆栈大小:ulimit -s unlimited CPU 时间:ulimit -t unlimited 虚拟内存:ulimit -v unlimited
永久修改ulimit,需要修改/etc/security/limits.conf。
# vim /etc/security/limits.conf # 添加如下的行 * soft noproc 65535 * hard noproc 65535 * soft nofile 65535 * hard nofile 65535
(前面的*星号代表针对所有的用户;noproc 是代表最大进程数;nofile代表最大文件打开数;soft nofile的值不能超过hard nofile的值)
报错信息
tomcat启动后老是报错:java.lang.OutOfMemoryError: unable to create new native thread,
刚开始以为内存不够就增加tomcat内存:
JAVA_OPTS="-server -XX:PermSize=1024M -XX:MaxPermSize=2048m -DentityExpansionLimit=64000"
结果还是报这个错,后来怀疑是权限问题,使用root用户启动tomcat就好了。经过分析,原来linux用户默认能够创建的最大线程数是1024,所以才会报这个错误。 下面,介绍一下修改linux系统用户最大线程数限制:
linux系统对线程数量有个最大限制,当达到系统限制的最大线程数时使用账号密码ssh到系统时是无法登陆的,会报Write failed: Broken pipe,在root用户下切换到该用户会报 su: 无法设置用户ID: 资源暂时不可用1.# su - xxx(普通用户)su: 无法设置用户ID: 资源暂时不可用2.# ulimit -u
1024由此可以看出最大线程数为10243.修改最大线程数的配置
centos6.5[root@localhost ~]# cat /etc/security/limits.d/90-nproc.conf\\内容如下:* soft nproc 1024root soft nproc unlimited
centos7
[root@localhost ~]# cat /etc/security/limits.d/20-nproc.conf\\内容如下:* soft nproc 1024root soft nproc unlimited
上面可以看除了root用户外的所有用户均限制为1024,因此可以注释此行或者将值改大来解决,这样的修改是立马生效的
转载于:https://blog.51cto.com/qiangsh/2132763