09-06
27

Connection reset by peer: socket write error 错误

SocketException

最近开发一网站,在本地测试通过后放到购买的空间上,运行不到二天。空间的客服就和我说,我们的网站有问题,老是报错,并且停止了网站的运行。其报错内容如下:

警告: Exception Processing ErrorPage[errorCode=404, location=/404.jsp]
ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
     at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366)
     at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:403)
     at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:311)
     at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:293)
     at org.apache.catalina.connector.Response.flushBuffer(Response.java:544)
     at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:286)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)

    

以前也曾经遇到过ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error的问题,但是造成这个错误的各种原因不一样。

第一步,为了找出出错的原因,我在几台机器上测试,结果,终于在有一台机器上运行会出现那样的问题。

第二步,为了找出真正出错的代码,我将所有在jsp页面用到的处理数据代码删掉,结果运行正常,不再报那个错,这个说明问题应该在jsp页面。

第三步,由于我在jsp页面中直接用一个类通过spring和hibernate查询得到结果,没有用到struts.因此,我修改代码,将所有查询放到一个action里面,然后再用request.setAttribute()保存查询结果。再jsp页面直接用request.getAttribute取得结果。这样,再次运行,第一次页面显示正常,并且后台也不报错。于是我认为,问题已经解决。

但是,运行几次以后,打开几个新的同一个页面后,后台又开始报同样的错误了,晕~~~~

第四步, 为了确定问题的根源在哪里,我修改了VO,添加了implements Serializable,实现了Serializable接口。结果运行,这次是第一次运行后台就报错

第五步,我打开所有调试信息,结果发现每次action执行结束后,我都会用decorator,就是用装时器装饰一下页面,于是开始想,会不会是action执行结束后,再运行 "装饰器" 的那个过滤程序,结果造成session过期,从而导致那个问题。于是尝试不用装饰器去装饰那个页面。第一次运行正常。为了测试是否问题真正解决,我新开了10个ie窗口,在各个页面轮流刷新页面,在刷新了 100 多下后,发现后台还没有报错,初步确定问题已经解决!

另外值得说明的是tomcat.exe下面报错,但是用tomcat5.5.jar或者tomcat6.jar的时候不会报错,但是flush效果却没了


但是,造成这个问题的内在原因还是不清楚!



[本日志由 blurxx 于 2009-06-27 11:37 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: TOMCAT flush socket Exception
相关日志:
评论: 0 | 引用: 0 | 查看次数: 2072
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭