为什么我的weblogic过一段时间就会将连接池全部重建,导致所有客户端访问卡死(十几二十秒)。
有三台应用服务器,连一个数据库,三台应用服务器都有这现象,但不是同时发生(某一台应用服务器连接池全部重建,导致卡死的时候,其他两台应用服务器访问正常。)应用服务器操作系统:Windows Server 2003  R2 Standard Edition  SP2   
数据库服务器操作系统:Windows Server 2003  R2 Enterprise X64 Edition  SP2
内存、cpu资源都没有耗尽,应用和数据库服务器cpu使用率都较低,应用服务器内存占用50%左右,数据库服务器内存占用75%左右。weblogic版本:
Console Release Build
8.1.6.0
Server Release Build
8.1.6.0
Server BuildWebLogic Server 
8.1 SP6  Wed Jun 21 08:18:55 PDT 2006 781680 
All Server Product Versions
WebLogic Server 8.1 SP6  Wed Jun 21 08:18:55 PDT 2006 781680 
WebLogic XMLX Module 8.1 SP6  Wed Jun 21 08:18:55 PDT 2006 781680 Sqlserver数据库版本:
Microsoft SQL Server Management Studio      9.00.5000.00
Microsoft Analysis Services 客户端工具      2005.090.5000.00
Microsoft 数据访问组件 (MDAC)      2000.086.3959.00 (srv03_sp2_rtm.070216-1710)
Microsoft MSXML      2.6 3.0 6.0 
Microsoft Internet Explorer      6.0.3790.3959
Microsoft .NET Framework      2.0.50727.42
操作系统      5.2.3790日志:####<2011-12-3 上午09时48分10秒 CST> <Error> <HTTP> <mysvr> <myserver> <ExecuteThread: '85' for queue: 'weblogic.kernel.Default'> <<WLS Kernel>> <> <BEA-101017> <[ServletContext(id=2723444,name=defaultroot,context-path=/defaultroot)] Root cause of ServletException.
javax.servlet.jsp.JspException: Input/output error: java.net.SocketException: socket write error: Connection reset by peer.
at org.apache.struts.util.ResponseUtils.writePrevious(ResponseUtils.java:186)
at org.apache.struts.taglib.logic.IterateTag.doAfterBody(IterateTag.java:400)
at jsp_servlet._comm_mail.__mail_innermailsearch._jspService(__mail_innermailsearch.java:1353)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:370)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:107)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:225)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at com.whir.common.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:93)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7049)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3732)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)

####<2011-12-3 上午09时48分10秒 CST> <Info> <JDBC> <mysvr> <myserver> <ExecuteThread: '66' for queue: 'weblogic.kernel.Default'> <<anonymous>> <> <BEA-001068> <Connection for pool "MyJDBC Connection Pool" created.> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <JDBC> <mysvr> <myserver> <ExecuteThread: '78' for queue: 'weblogic.kernel.Default'> <<anonymous>> <> <BEA-001068> <Connection for pool "MyJDBC Connection Pool" created.> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <JDBC> <mysvr> <myserver> <ExecuteThread: '78' for queue: 'weblogic.kernel.Default'> <<anonymous>> <> <BEA-001132> <Initialized statement cache of size "5" for connection in pool "MyJDBC Connection Pool".> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <JDBC> <mysvr> <myserver> <ExecuteThread: '66' for queue: 'weblogic.kernel.Default'> <<anonymous>> <> <BEA-001132> <Initialized statement cache of size "5" for connection in pool "MyJDBC Connection Pool".> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <JDBC> <mysvr> <myserver> <ExecuteThread: '41' for queue: 'weblogic.kernel.Default'> <admin> <BEA1-48620971A704B4F312AD> <BEA-001068> <Connection for pool "MyJDBC Connection Pool" created.> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <Common> <mysvr> <myserver> <ExecuteThread: '78' for queue: 'weblogic.kernel.Default'> <<anonymous>> <> <BEA-000628> <Created "10" resources for pool "MyJDBC Connection Pool", out of which "10" are available and "0" are unavailable.> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <Common> <mysvr> <myserver> <ExecuteThread: '64' for queue: 'weblogic.kernel.Default'> <admin> <BEA1-48600971A704B4F312AD> <BEA-000628> <Created "10" resources for pool "MyJDBC Connection Pool", out of which "10" are available and "0" are unavailable.> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <JDBC> <mysvr> <myserver> <ExecuteThread: '98' for queue: 'weblogic.kernel.Default'> <admin> <> <BEA-001132> <Initialized statement cache of size "5" for connection in pool "MyJDBC Connection Pool".> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <JDBC> <mysvr> <myserver> <ExecuteThread: '92' for queue: 'weblogic.kernel.Default'> <<anonymous>> <> <BEA-001068> <Connection for pool "MyJDBC Connection Pool" created.> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <JDBC> <mysvr> <myserver> <ExecuteThread: '92' for queue: 'weblogic.kernel.Default'> <<anonymous>> <> <BEA-001132> <Initialized statement cache of size "5" for connection in pool "MyJDBC Connection Pool".> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <Common> <mysvr> <myserver> <ExecuteThread: '46' for queue: 'weblogic.kernel.Default'> <admin> <> <BEA-000628> <Created "10" resources for pool "MyJDBC Connection Pool", out of which "10" are available and "0" are unavailable.> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <Common> <mysvr> <myserver> <ExecuteThread: '87' for queue: 'weblogic.kernel.Default'> <<anonymous>> <> <BEA-000628> <Created "10" resources for pool "MyJDBC Connection Pool", out of which "10" are available and "0" are unavailable.> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <Common> <mysvr> <myserver> <ExecuteThread: '92' for queue: 'weblogic.kernel.Default'> <<anonymous>> <> <BEA-000628> <Created "10" resources for pool "MyJDBC Connection Pool", out of which "10" are available and "0" are unavailable.> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <JDBC> <mysvr> <myserver> <ExecuteThread: '11' for queue: 'weblogic.kernel.Default'> <admin> <> <BEA-001068> <Connection for pool "MyJDBC Connection Pool" created.> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <JDBC> <mysvr> <myserver> <ExecuteThread: '11' for queue: 'weblogic.kernel.Default'> <admin> <> <BEA-001132> <Initialized statement cache of size "5" for connection in pool "MyJDBC Connection Pool".> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <JDBC> <mysvr> <myserver> <ExecuteThread: '71' for queue: 'weblogic.kernel.Default'> <admin> <> <BEA-001068> <Connection for pool "MyJDBC Connection Pool" created.> 
####<2011-12-3 上午09时48分10秒 CST> <Info> <JDBC> <mysvr> <myserver> <ExecuteThread: '71' for queue: 'weblogic.kernel.Default'> <admin> <> <BEA-001132> <Initialized statement cache of size "5" for connection in pool "MyJDBC Connection Pool".> 

解决方案 »

  1.   

    at org.apache.struts.taglib.logic.IterateTag.doAfterBody(IterateTag.java:400)
    at jsp_servlet._comm_mail.__mail_innermailsearch._jspService(__mail_innermailsearch.java:1353)
    看日志,似乎和你的某功能有关。似乎有个mail_innermailsearch.jsp的东东,里面用了struts的html:logic 标签,这个地方是有问题的,请检查,是否循环体过大了
      

  2.   

    是的,重点看这些jsp或类javax.servlet.jsp.JspException: Input/output error: java.net.SocketException: socket write error: Connection reset by peer.
    at org.apache.struts.util.ResponseUtils.writePrevious(ResponseUtils.java:186)
    at org.apache.struts.taglib.logic.IterateTag.doAfterBody(IterateTag.java:400)
    at jsp_servlet._comm_mail.__mail_innermailsearch._jspService(__mail_innermailsearch.java:1353)再根据socket write error: Connection reset by peer.
    http://hi.baidu.com/suofang/blog/item/5bd0fed3be6512d3a9ec9a3b.html
    其中一种可能的原因是 服务器接受的连接数超过了其承载量
      

  3.   

    服务器的性能应该也没问题,所有服务器的cpu使用率都很低,应用服务器内存占用50%左右,数据库服务器内存占用75%左右。
      

  4.   

    再补充一下,卡死的时候,发现weblogic控制台也是卡死的,点不动,会不会是weblogic有问题卡死了导致连接池全部重建
      

  5.   

    估计是大对象问题。可能dump了
      

  6.   

    监控Weblogic,发现在卡死的时候,Queue Length瞬间变得很高,这是什么原因呢,Threads count设置的是100,Idle Threads: 99 ,这个有关系吗。
      

  7.   

    又验证了一下,上图中的Idle Threads应该不是即时的,没有刷新,在Queue Length瞬间变得很高时,Idle Threads是0,我把Threads count设置成200了还是不行。
    我一直刷新监控页面,Idle Threads一直维持在190左右,然后突然页面就死了,等到半分钟左右恢复正常后,Idle Threads是0,也就是说瞬间Threads就被占满了。这可能是什么情况引起的呢?
      

  8.   

    系统每隔几分钟卡死一分钟的问题已经可以确定是因为日志切换引起的。
    Weblogic设置保存的HTTP操作日志文件大小是5m,当日志满了,生成新的日志文件时,会导致日志写等待(猜测),从而导致Weblogic线程瞬间占满,系统卡死。感谢各位热心的朋友。