码迷,mamicode.com
首页 > 其他好文 > 详细

Tomcat 7 假死调优

时间:2015-09-02 23:11:59      阅读:1773      评论:0      收藏:0      [点我收藏+]

标签:

最近系统二次开发之后,发现使用的 Tomcat 7 会经常假死。前端点击页面无任何反应,打开firebug,很多链接一直在等待服务器的反应。查看服务器的状态,CPU占用很少,最多不超过10%,一般只有2%,3%左右,内存占用倒是接近80, 90%。一开始怀疑是tomcat内存配置不够,但是打开 jvisualvm.exe 分析,发现Tomcat 占用的堆内存没有什么问题。因为是假死,所以最后怀疑到 tomcat的 链接数和 数据库的链接数的配置估计太小了。netstat -na 结果页显示很多time_wait.

修改配置,增加 tomcat 的链接配置:

1.在 conf目录下的 server.xml 中 找到 <Connector 元素加入  minProcessors="100" maxProcessors="2000"

2. 修改dbcp 数据库(sql server 2005)链接配置:

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName">
            <value>${dataSource_driverClassName}</value>
        </property>
        <property name="url">
            <value>${dataSource_url}</value>
        </property>
        <property name="username">
            <value>${dataSource_username}</value>
        </property>
        <property name="password">
            <value>${dataSource_password}</value>
        </property>
        <!--maxActive: 最大连接数量-->    
        <property name="maxActive" value="150"/>  
        <!--minIdle: 最小空闲连接-->    
        <property name="minIdle" value="5"/>  
        <!--maxIdle: 最大空闲连接-->    
        <property name="maxIdle" value="20"/>  
        <!--initialSize: 初始化连接-->    
        <property name="initialSize" value="30"/>  
        <!-- 连接被泄露时是否打印 -->  
        <property name="logAbandoned" value="true"/>  
        <!--removeAbandoned: 是否自动回收超时连接-->    
        <property name="removeAbandoned"  value="true"/>  
        <!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->    
        <property name="removeAbandonedTimeout" value="10"/> 
        <!--maxWait: 超时等待时间以毫秒为单位 1000等于60秒-->  
        <property name="maxWait" value="1000"/>  
        <!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. -->  
        <property name="timeBetweenEvictionRunsMillis" value="10000"/>  
        <!--  在每次空闲连接回收器线程(如果有)运行时检查的连接数量 -->  
        <property name="numTestsPerEvictionRun" value="10"/>  
        <!-- 1000 * 60 * 30  连接在池中保持空闲而不被空闲连接回收器线程-->  
        <property name="minEvictableIdleTimeMillis" value="10000"/>   
        <property name="validationQuery" value="select 1"/>  
    </bean>

数据库框架采用的是 ibatis 框架。

原理的 dbcp 只有 最上面的四项配置:

        <property name="driverClassName">
            <value>${dataSource_driverClassName}</value>
        </property>
        <property name="url">
            <value>${dataSource_url}</value>
        </property>
        <property name="username">
            <value>${dataSource_username}</value>
        </property>
        <property name="password">
            <value>${dataSource_password}</value>
        </property>

估计就是这里的配置问题。

 

Tomcat 7 假死调优

标签:

原文地址:http://www.cnblogs.com/digdeep/p/4779544.html

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