摘要:
今天使用使用tomcat用户登录后,发生错误: Resourcetemporarilyunavailable 。并且切换root和用户,意识该错误。 经过深入查询,排除了内,句柄数等问题。使用root用户重新登录后,打开大量线程时没有问题。试着调整ulimit各项参数,最后发现是"maxuserprocesses"参数有问题,通过root用户调整大小。
一、Linux提示的错误:
使用root用户,查看ulimit各项参数。
ulimit -a
二、查看nproc。
nproc就是"max user processes",完整描述是: nproc - max number of processes
参数含义:单个用户可以启动的线程数,因为进程也会启动一个线程,所以也间接对进程数有限制。
文件20-nproc.conf中由此解释Default limit for number of user's processes to prevent,可见这个文件默认用来限制用户拥有的最大进程数量。经查看,每个用户(*)的nproc被限制为4096。
egrep -v "^$|^#" /etc/security/limits.d/20-nproc.conf
故需要修改20-nproc.conf ,重新登录后即可生效。
或者,如果只是相对某个单个用户进行限制更改,可以修改/etc/security/limits.conf,将*改成具体用户名也是可以生效的。
注:在20-nproc.conf中设置nofile的值,也是可以生效的,系统以他为标准;但是不建议这么设置。
三、关于Linux下用户资源限制limits.conf详解
1、limits.conf文件实际上是linux PAM(认证模块)中pam_limits.so的配置文件,而且只针对单个会话。
2、要使limits.conf文件配置生效,必须确保pam_limits.so文件被加入启动文件中。要查看/etc/pam.d/login文件中有session required /lib/security/pam_limits.so
limits.conf文件格式如下:
<domain> <type> <item> <value>
domain有好几种格式,具体可以用cat limits.conf来查看,不过一般来说,我们都是用的用户名和组名的形式:username|@groupname
设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有的限制。
type:有soft,hard和-,soft指的是当前系统生效的设置值,软限制也可以理解为警告值。hard表名系统中所能设定的最大值。soft的限制不能比hard限制高,
用 - 表明同时设置了soft和hard的值。
item表明需要限制的使用资源类型
core 限制内核文件的大小
data 最大数据大小
fsize 最大文件大小
memlock 最大锁定内存地址空间
nofile 打开文件的最大数目
rss 最大持久设置大小
stack 最大栈大小
cpu 以分钟为单位的最多CPU时间
noproc 进程的最大数目
as 地址空间限制
maxlogins 此用户允许登录的最大数目
转载自原文链接, 如需删除请联系管理员。
原文链接:Linux 提示 Resource temporarily unavailable,转载请注明来源!