码迷,mamicode.com
首页 > 系统相关 > 详细

Tomcat优化记录_数据源最大连接数_linux系统openfile最大限制

时间:2015-02-06 07:11:28      阅读:701      评论:0      收藏:0      [点我收藏+]

标签:tomcat   linux   数据源   

近日在维护项目WEB服务时遇到一些问题,解决并记录如下:


1、接口服务mamwebservice由于被频繁大量调用,易出现大量并发请求时,JNDI连接数满,导致此服务宕掉,停止服务;


   使用开源监控工具probe,监控此服务相关数据源实时连接数,这样可以第一时间知道服务是否正常(此probe可百度下载,置于tomcat/webapps下,同时配置tomcat manager admin用户即可使用)

   修改 tomcat/conf/server.xml 增加下方蓝色参数 修改其最大连接数(tomcat默认为8个)

 <Context docBase="/usr/local/tomcat-6.0.39/webapps/mamwebservice.war" path="/mamwebservice" reloadable="true">

<Resource name="com.dayang.datasource.imam" auth="Container" type="javax.sql.DataSource" maxActive="50" maxIdle="10" maxWait="-1" username="DYMAMDB" password="DYMAMDB" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=mdb-scan.hljtvmz.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME = moradb)))"/>

<Resource name="com.dayang.datasource.dyworkflow" auth="Container" type="javax.sql.DataSource" username="DYESBDB30" password="DYESBDB30" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=mdb-scan.hljtvmz.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME = moradb)))"/>

<Resource name="com.dayang.datasource.dyarchive" auth="Container" type="javax.sql.DataSource" username="dyac" password="dyac" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=mdb-scan.hljtvmz.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME = moradb)))"/>


<!--

      <Resource name="com.dayang.datasource.imam.old" auth="Container" type="javax.sql.DataSource" username="dymam" password="dymam" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=mdb-scan.hljtvmz.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME = moradb)))"/>

-->

 </Context>


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 failed java.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应用,观察是否解决问题;



本文出自 “JeremySpace” 博客,谢绝转载!

Tomcat优化记录_数据源最大连接数_linux系统openfile最大限制

标签:tomcat   linux   数据源   

原文地址:http://ruixiang113.blog.51cto.com/9905899/1612102

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!