遇到了坑就记下来,养成一个好习惯,利人利己。java
tomcat启动后总是报错:java.lang.OutOfMemoryError: unable to create new native thread,linux
刚开始觉得内存不够就增长tomcat内存:centos
JAVA_OPTS="-server -XX:PermSize=1024M -XX:MaxPermSize=2048m -DentityExpansionLimit=64000"
tomcat
结果仍是报这个错,后来怀疑是权限问题,使用root用户启动tomcat就行了。ssh
通过分析,原来linux用户默认可以建立的最大线程数是1024,因此才会报这个错误。测试
下面,介绍一下修改linux系统用户最大线程数限制:spa
centos6.5/linux系统对线程数量有个最大限制,当达到系统限制的最大线程数时使用帐号密码ssh到系统时是没法登录的,会报Write failed: Broken pipe,在root用户下切换到该用户会报 su: 没法设置用户ID: 资源暂时不可用线程
1.# su - xxx(普通用户)
su: 没法设置用户ID: 资源暂时不可用
2.# ulimit -u
1024
由此能够看出最大线程数为1024
3.修改最大线程数的配置
# vi /etc/security/limits.d/90-nproc.conf
内容以下:
* soft nproc 1024
root soft nproc unlimited
上面能够看除了root用户外的全部用户均限制为1024,所以经过能够注释此行或者将值改大来解决该问题修改完成后保存退出,这样的修改是立马生效的
经测试成功!
server