java.io.IOException: Connection reset by peer异常

java.io.IOException: Connection reset by peer
    at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
    at sun.nio.ch.IOUtil.read(IOUtil.java:197)
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)
    at com.wanyu.smarthome.gateway.EquipmentSocketServer.handleReadEx(EquipmentSocketServer.java:245)
    at com.wanyu.smarthome.gateway.EquipmentSocketServer.run(EquipmentSocketServer.java:115)

java.io.IOException: Connection reset by peer异常_第1张图片
使用 Java NIO 建立 Socket 服务端,当客户端意外关闭的情况,不是发送指定指令通知服务器退出,就会产生此错误。
也有可能产生的错误是:org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe

环境:Eclipse + Tomcat + Spring + Spring MVC + MyBatis
在Eclipse中以Debug模式启动调试


错误原因:
这个异常是由于以下几个原因造成。
1、客户端再发起请求后没有等服务器端相应完,点击了stop按钮,导致服务器端接收到取消请求(频繁的刷新就会产生此问题)。
   通常情况下是不会有这么无聊的用户,出现这种情况可能是由于用户提交了请求,服务器端相应缓慢,比如业务逻辑有问题等原因,导致页面过了很久也没有刷新出来,用户就有可能取消或重新发起请求。

这种错误是合理范围内的,无法避免的,不必关心它。
2、Tomcat服务器在接受用户请求的时候,有其自身的处理能力,线程、服务器等各个资源限制,超出Tomcat承载范围的请求,就会被tomcat停掉,也可能产生该错误。

3、Linux的线程机制会产生JVM出错的问题,特别是在连接高峰期间经常出现这样的问题,tomcat在linux下也出现类似情况。
 

你可能感兴趣的:(1.,Java学习历程)