环境: struts + ibatis + sqlserver2005,一小时活动用户大概120。一段时间(10天)后就非常慢,但是不死,jvm的内存,线程数、cup值都正常。生产是jboss4.2,win7系统, 生产慢的时候,又开了一个tomcat连接相同数据库,tomcat正常使用。请高手指点....
另外ibatis配置请帮忙看一下,是否存在不合理。
<sqlMapConfig>
<settings
maxRequests="1024"
maxSessions="256"
maxTransactions="64"
/> 
 <transactionManager type="JDBC" commitRequired="false">
<dataSource type="DBCP">

<property name="JDBC.Driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
      
<property name="JDBC.ConnectionURL" value="jdbc:sqlserver://SGHVMAPP36;databasename=funddb;SelectMethod=Cursor"/>
<property name="JDBC.Username" value="aaaa" />
<property name="JDBC.Password" value="1234567" />
<property name="Pool.MaximumActiveConnections" value="200" />
<property name="Pool.MaximumIdleConnections" value="50" />
<property name="Pool.MaximumWait" value="1000" />
<property name="Pool.ValidationQuery" value="select getdate()" />
<property name="Pool.LogAbandoned" value="false" />
<property name="Pool.RemoveAbandoned" value="true" />
<property name="Pool.RemoveAbandonedTimeout" value="300" />
</dataSource>
  </transactionManager>

解决方案 »

  1.   

    再说了,生产系统用WIN7的,这个头一次见,怎么也要换成SERVER系统
      

  2.   

    找一个jmeter测试工具测一下,看并发多少就挂。还有数据库连接,是不是没有关闭。
      

  3.   

    信息太少无法判断。不过,你说“生产慢的时候,又开了一个tomcat连接相同数据库,tomcat正常使用”
    这个应该来说可以初步排除数据库存在问题。你说:“jvm的内存,线程数都正常”,但不知道你所说的正常是指什么:
      内存的话,至少要看看GC频度;
      线程的话,应该看看空闲线程数,最好能跟踪 ThreadDump 信息;
      另外连接池也应该观察观察;
    此外应该考虑用些页面来进行测试排查环境因素,比如:
      空JSP页面请求;
      非常简单的JDBC查询的JSP:select * from dual;
      使用连接池进行查询的JSP;
      使用频度高的函数调用,如权限检查、登录等;
      其它受怀疑的函数调用;
      

  4.   


    多谢分析,提的方法我的试试。补充信息:
    jconsole跟踪查看,内存、线程的使用程度与正常使用相同,比峰值小一些,线程没有死掉的
    gc通过jobss中run.bat配置打印出日志,gc频率一直稳定出问题前一小时,连接池情况 活动 pool.getNumActive()最多也只有16个。挂起数pool.getNumIdle()最大也只有十几个。让测试人员分别作了50,300,500并发测试,测试的时候再使用系统比较慢(50时不是很慢,其他很慢),测试结束后就恢复正常。现在我也比较怀疑,ibatis2.3\dbcp1.2.2 哪有什么问题,或配置问题 还在查找....
    还请大家多多帮忙分析,谢谢!
      

  5.   

    现象其实像,我们进行130个并发测试时,再使用系统,登录jsp页面显示不慢,一登录查询就很慢。
    但是130个并发测试时pool.getNumActive()一直都是100多,而生产出问题时只有十几或几,