系统中与数据库操作有关的页面及JBOSS DOS控制台均无响应,且无任何异常信息显示

系统框架:
spring-framework-2.0.5
spring mvc
spring jdbcTemplate
数据库
oracle 9.2
每月主表数据量200w
容器
jboss-4.0.5.GA
web端口配置信息如下
<Connector port="8080" address="${jboss.bind.address}"
         maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
         emptySessionPath="true" maxPostSize="0" 
         enableLookups="false" redirectPort="8443" acceptCount="100"
         connectionTimeout="20000" disableUploadTimeout="true"/>
数据库连接池
proxool-0.9.0RC3
配置参数如下
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close" >
<property name="driver" value="${jdbc.driverClassName}"/>
<property name="driverUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="alias">
      <value>eamdb</value>
    </property>
    <property name="houseKeepingSleepTime">
      <value>90000</value>
   </property>
    <property name="prototypeCount">
      <value>5</value>
    </property>
       <property name="maximumConnectionCount">
      <value>100</value>
    </property>
    <property name="minimumConnectionCount">
      <value>15</value>
    </property>
    <property name="trace">
      <value>true</value>
    </property>
    <property name="verbose">
      <value>true</value>
    </property>
</bean>
JDK
j2sdk1.4.2_12
jvm启动参数-Xms256m -Xmx900m
服务器硬件:至强2g服务器,内存4g
操作系统:win2000 server
杀毒软件:瑞星

前两个星期用户反映,登陆页面输入用户名和密码后不能登陆系统,界面一直停顿在那里,后维护人员重新运行run.bat才恢复正常,但上个星期该现象变得非常频繁,因此我赶紧去现场查看,发现run.bat窗口的dos界面无任何响应,且显示的log信息仍然是启动时的信息(因在试用阶段,所以正常有用户登陆情况下,dos应有调试log信息),登陆页面,果然无法登陆,因此关闭dos控制台,重新启动run.bat,后登陆正常,于是我还反复登陆了几次,结果也正常,正准备要走出机房,客户打电话过来,所登陆界面又停顿在输入用户名密码之后了,于是赶紧看,果然,登陆又不能用了,查看dos控制抬,与刚才有问题的时候的情况一样,没反映,也没任何新的log,于是从oracle控制台看当前数据库会话,无任何死锁,也未见有长sql执行,无奈,只能重新启动计算机,重新启动数据库服务,然后启动run.bat,又正常了,后反复登陆确认没问题后,打电话给客户确认,还耐住性子继续待在机房,盯住oracle控制台,大概30分钟后,没电话打来我就先走了(有其他急事)这一天都没问题。

过了几天,因为程序版本更新,我去了机房,更新好后为了防止那个问题,重复登陆几次,结果在第10次左右,居然又发生,查看数据库会话,还是没有死锁,dos控制台死死的定在那里没响应,没任何异常信息出来,而且系统中其他非数据库的jsp页面(里面有jstl标记)可以正常显示,就是数据库相关(当然几乎是所有)的页面一点反映都没有,然后看proxool控制页面,发现15个连接会话所显示的最后执行sql都是刚开始正常时候的,然后反复重新启动jboss和数据库服务,结果情况更糟糕,才执行不到3次登陆,系统就又没相应了,实在没办法,时间紧迫,只能用死办法反复重新启动jboss和数据库服务,并多次登陆验证,最后终于好歹成了,时间已经过去一个小时了,后来又在机房待半个小时,确认没有客户夺命call了以后终于闪了。

接着当天晚上赶紧查询网上资料,有的说是内存泄露,但是控制台和几天来的log文件并没有out of memery的异常出现,而且已经设置jvm堆内存选项,最小为256m,最大为900m。有的说的连接未释放,但是我用的是spring jdbcTemplate,不用手动代码管理数据库的开关释放,并且配置用法都是仿照jpetstroe。有的说改web的线程数等参数,接着一个个的改,问题是我的开发环境根本就总没出现那样的问题,因此没办法验证上述推测,就这样一直弄到凌晨3点多,于是打算干脆明天在服务器上安装MyEclipse直接进行debug,找到问题所在。

第二天在服务器上安装好MyEclipse,然后配置好jboss server启动参数,通过MyEclipse Application Server启动jboss,刚开始的时候一切正常,神奇的事情发生了,客户半个小时内仍然反映:登陆正常!同时MyEclipse的控制台上都能正常显示出调试log,这使得我想debug的愿望落空,后来离开现场,当天正常。第三天,自己有点担心,跑去机房看,还是没问题,我还故意重新启动了几次jboss,也没问题(因为以前出现问题的时间点都是在重新启动jboss后的前几次登陆中),稍后几天,我做了几次程序更新部署,但系统一直稳定工作到今天(有5天了)。

现在系统尽管正常运行,但是心中仍然疑惑不解,为什么由MyEclipse Application Server来启动jboss就没问题了呢?况且他们使用的启动参数不都一样吗?而且在服务器上装个MyEclipse毕竟也不是个办法,只能是临时应付客户需要,希望各位能给点指教。

你可能感兴趣的:(spring,oracle,jboss,MyEclipse,dos)