分类: LINUX
2012-01-20 10:20:02
今天接到电话说公司服务器tomcat启动不起来总是报出too many open files的警告或错误信息,经过一番Google后下面是内容自己也不想写就直接粘贴上了,而且这是可以解决问题的。
故障一、linux too many open files;如下图:
linux系统出现Too many open files 错误,这是因为文件描述符大小不够,或者有不正常的网络连接(Socket也是一种特殊的文件)、文件IO没有关闭并释放出文件描述符(文件句柄,File Operator)。
使用如下命令查看系统对允许打开最大文件描述符的配置:
ulimit -u 查看open files设置
ulimit -a 查看所有设置
ulimit -u 65535(新的open files 值)修改设置
ulimit -n 65536 设置用户可以同时打开的最大文件数(max open files)
如果本参数设置过小,对于并发访问量大的网站,可能会出现too many open files的错误
使用lsof -p pid [httpd进程的 pid、java的pid]来查看系统中apache进程和java运行时进程当前打开的文件资源,发现两者之和已经接近1024,大于了默认的设置。
修改配置:
修改/etc/security/limits.conf,在文件末加上
* soft nofile 65536
* hard nofile 65536
系统级文件描述符极限还可以通过将以下三行添加到 /etc/rc.d/rc.local 启动脚本中来设置:
# Increase system-wide file descriptor limit.
echo 65536 > /proc/sys/fs/file-max
echo 65536 > /proc/sys/fs/inode-max
二、tomcat 性能优化,连接数调整
1, Tomcat内存参数配置
如果是Win与Linux系统启动Tomcat服务器,需要在tomcat/bin/catalina.sh与/tomcat/bin/catalina.bat两个文件:在两个文件里面加如:
SET CATALINA_OPTS= -Xms64m -Xmx128m
2, Tomcat连接数配置
配置Tomcat连接数.需要在Server.xml文件里面加如:
maxThreads=”150″ 表示最多同时处理150个连接
minSpareThreads=”25″ 表示即使没有人使用也开这么多空线程等待
maxSpareThreads=”75″ 表示如果最多可以空75个线程,例如某时刻有80人访问,之后没有人访问了,则tomcat不会保留80个空线程,而是关闭5个空的。
acceptCount=”100″ 当同时连接的人数达到maxThreads时,还可以接收排队的连接,超过这个连接的则直接返回拒绝连接。
connectionTimeout=”20000″ maxThreads=”150″
minSpareThreads=”25″
maxSpareThreads=”75″
enableLookups=”false”
acceptCount=”100″ debug=”0″
disableUploadTimeout=”true”
redirectPort=”8443″ URIEncoding=”UTF-8″/>
URIEncoding=”UTF-8″ 是设定JSP编码格式
转载: