Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1154454
  • 博文数量: 150
  • 博客积分: 2739
  • 博客等级: 少校
  • 技术积分: 2392
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-07 12:28
文章分类

全部博文(150)

文章存档

2015年(2)

2014年(16)

2013年(10)

2012年(58)

2011年(64)

分类: LINUX

2012-01-20 10:20:02

      今天接到电话说公司服务器tomcat启动不起来总是报出too many open files的警告或错误信息,经过一番Google后下面是内容自己也不想写就直接粘贴上了,而且这是可以解决问题的。

故障一、linux too many open files;如下图:

  1. 1.    org.apache.jk.common.ChannelSocket acceptConnections
  2. 2.    WARNING: Exception executing accept
  3. 3.    java.net.SocketException: Too many open files
  4. 4.     at java.net.PlainSocketImpl.socketAccept(Native Method)
  5. 5.     at java.net.PlainSocketImpl.accept(Unknown Source)
  6. 6.     at java.net.ServerSocket.implAccept(Unknown Source)
  7. 7.     at java.net.ServerSocket.accept(Unknown Source)
  8. 8.     at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:295)
  9. 9.     at org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:641)
  10. 10.     at org.apache.jk.common.SocketAcceptor.runIt(ChannelSocket.java:852)
  11. 11.     at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
  12. 12.     at java.lang.Thread.run(Unknown Source)

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编码格式


转载:

阅读(877) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~