近日在维护项目WEB服务时遇到一些问题,解决并记录如下:
1、接口服务mamwebservice由于被频繁大量调用,易出现大量并发请求时,JNDI连接数满,导致此服务宕掉,停止服务;
使用开源监控工具probe,监控此服务相关数据源实时连接数,这样可以第一时间知道服务是否正常(此probe可百度下载,置于tomcat/webapps下,同时配置tomcat manager admin用户即可使用)
修改 tomcat/conf/server.xml 增加下方蓝色参数 修改其最大连接数(tomcat默认为8个)
2、WEB服务mamplatform,偶现报错导致tomcat崩溃,此种情况表现为客户端通过IE访问报404,在probe查看发现两个war包均消失;重启tomcat后正常;
报错日志:(catalina.out)
十月 06, 2014 8:21:12 上午 org.apache.tomcat.util.net.JIoEndpoint$Acceptor run
严重: Socket accept failedjava.net.SocketException: 打开的文件过多
经过查找资料并分析,可能是应用不严谨,代码中存在文件句柄未释放,导致java进程打开的file数,超出了linux系统默认的open file 限制数;(可参考http://www.myexception.cn/linux-unix/488580.html)
linux系统下,执行命令:
ulimit -a//查看open file 参数默认为 1024
ps -ef |grep java//查出java进程ID[*]
lsof -p [*]//输出java进程打开的文件数可看到打开文件非常多
修改linux系统open file 限制数:
#vi /etc/security/limits.conf增加下面这一行内容:* - nofile 65535
将限制增加到65535
重启服务器检查是否生效,重启tomcat应用,观察是否解决问题;