浏览 3766 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-08-25
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毕竟也不是个办法,只能是临时应付客户需要,希望各位能给点指教。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-03-31
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close" >
怎么都写method="close"? ProxoolDataSource根本没close()这个方法 |
|
返回顶楼 | |