weblogic经常连接池重建,socket write error: Connection reset by peer

xzrd 2011-12-03 11:04:58
为什么我的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".>
...全文
1683 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzrd 2011-12-07
  • 打赏
  • 举报
回复
系统每隔几分钟卡死一分钟的问题已经可以确定是因为日志切换引起的。
Weblogic设置保存的HTTP操作日志文件大小是5m,当日志满了,生成新的日志文件时,会导致日志写等待(猜测),从而导致Weblogic线程瞬间占满,系统卡死。

感谢各位热心的朋友。
什么都不能 2011-12-05
  • 打赏
  • 举报
回复
估计是大对象问题。可能dump了
xzrd 2011-12-05
  • 打赏
  • 举报
回复
再补充一下,卡死的时候,发现weblogic控制台也是卡死的,点不动,会不会是weblogic有问题卡死了导致连接池全部重建
dracularking 2011-12-05
  • 打赏
  • 举报
回复
数据库服务器也应该没有问题,当某一台应用服务器的连接全部重建的时候,另两台应用服务器访问是正常的,说明问题应该出在应用服务器上。


该查的都查了吗,说明三台应用服务器在某一时刻遭受的具体情况是不一样的

如果可以测试单个应用服务器的压力,逐一增加连接数,看临界点是不是报这个异常
xzrd 2011-12-05
  • 打赏
  • 举报
回复
服务器的性能应该也没问题,所有服务器的cpu使用率都很低,应用服务器内存占用50%左右,数据库服务器内存占用75%左右。
xzrd 2011-12-05
  • 打赏
  • 举报
回复
有一个问题就是,为什么会把所有连接都重建,导致所有访问这台应用服务器的用户都卡死。
网络应该是没有问题的,应用服务器和数据库服务器都在数据中心区,之间是直连的,没有防火墙什么的。

数据库服务器也应该没有问题,当某一台应用服务器的连接全部重建的时候,另两台应用服务器访问是正常的,说明问题应该出在应用服务器上。

这段时间,三台应用服务器轮着卡死,郁闷啊。
xzrd 2011-12-05
  • 打赏
  • 举报
回复
谢谢两位的热心解答,我先检查看看。
xzrd 2011-12-05
  • 打赏
  • 举报
回复
又验证了一下,上图中的Idle Threads应该不是即时的,没有刷新,在Queue Length瞬间变得很高时,Idle Threads是0,我把Threads count设置成200了还是不行。
我一直刷新监控页面,Idle Threads一直维持在190左右,然后突然页面就死了,等到半分钟左右恢复正常后,Idle Threads是0,也就是说瞬间Threads就被占满了。

这可能是什么情况引起的呢?
xzrd 2011-12-05
  • 打赏
  • 举报
回复
监控Weblogic,发现在卡死的时候,Queue Length瞬间变得很高,这是什么原因呢,Threads count设置的是100,Idle Threads: 99 ,这个有关系吗。

dracularking 2011-12-03
  • 打赏
  • 举报
回复
是的,重点看这些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
其中一种可能的原因是 服务器接受的连接数超过了其承载量
什么都不能 2011-12-03
  • 打赏
  • 举报
回复
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 标签,这个地方是有问题的,请检查,是否循环体过大了

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧