`
frenchmay
  • 浏览: 232651 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Connection reset by peer

阅读更多

最近在开发一款多线程音乐下载播放器的服务端.

包括tcp应用服务器和服务容器的代码.

刚开始进行压力测试的时候频繁出现Connection reset by peer异常,

并且成功的连接数不超过50个.

google一下发现

出现Connection reset by peer比较常见的原因是:

服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;

.连接被防火樯或proxy中断,或防火墙和代理设置不当。

 

对于第一种原因,

回想起tcp/ip详解第一卷协议中提到过:

bsd的socket的tcp连接队列的默认长度是5,

 

backlog   用于在TCP层接收链接的缓冲池的最大个数,这个个数可在应用层中的listen函数里设置,当客户链接请求大于这个个数(缓冲池满),其它的未进入链接缓冲池的客户端在tcp层上tcp模块会自动重新链接,直到超时(大约57秒后)

 

我们的应用层的链接完成是要从tcp层的链接缓冲池中移出一个(accept函数实现)

 

因此我在本机测试的时候,连接数超过50就报Connection reset by peer.

是因为连接数限制,操作系统(当前系统为win2k.)把超出的连接丢弃的原因.

我兴冲冲地把serversocket的backlog设置为200,可以支持

200个线程每休息2s发送一次请求,请求的等待时间为5s.

也就是大约每7s进行一次请求应答.

计算下来,1s能进行30次请求应答.

 

另外记录一下SO_LINGER

3.2 How do I control the amount of time a socket will linger before resetting?

When a socket wishes to terminate a connection it can "linger", allowing unsent data to be transmitted, or it can "reset" which means that all unsent data will be lost. You can explicitly set a delay before a reset is sent, giving more time for data to be read, or you can specify a delay of zero, meaning a reset will be sent as the java.net.Socket.close() method is invoked.

The socket option SO_LINGER controls whether a connection will be aborted, and if so, the linger delay. Use the java.net.Socket.setSoLinger method, which accepts as parameters a boolean and an int. The boolean flag will activate/deactivate the SO_LINGER option, and the int will control the delay time.

摘自 http://www.davidreilly.com/java/java_network_programming/

分享到:
评论

相关推荐

    linux iptables防火墙黑名单(封IP) Connection reset by peer

    linux iptables防火墙黑名单(封IP) Connection reset by peer

    connection reset by peer问题总结及解决方案

    "Connection Reset by Peer" 是一个常见的网络错误,通常在数据传输过程中出现,表明通信的另一方(客户端或服务器)突然终止了连接。这个问题可能由多种原因引起,下面我们将详细探讨这些原因并提供相应的解决方案...

    java.net.SocketException Connection reset 解决方法

    * Connection reset by peer:Connection reset by peer 是一种特殊的 SocketException,它发生在客户端和服务器端之间的连接断开后,导致连接的一端继续发送数据,引发该异常。 实践经验 通过实践经验,我们可以...

    connection_reset.rar

    解决oracle数据库发生'Connection reset by peer' or 'Connection reset'的错误 这边的数据库连接是kettle自带的h2数据库,只要有kettle就有这个数据库,目录位于data-integration\samples\db\,连接方式是 ...

    Docker配置阿里云镜像加速pull的实现

    read tcp 192.168.31.60:55550->104.18.123.25:443: read: connection reset by peer 传输异常 然后看见网上说可以配置阿里云提供的镜像加速 具体方式 进入阿里云的容器镜像服务 快速链接: 容器镜像服务 复制加速...

    java中的connection reset 异常处理分析

    ECONNRESET错误表示"connection reset by peer",即对方(通常是服务器)主动关闭了连接。这可能是因为服务进程在客户端之前结束,导致服务器发送一个FIN包来结束连接。如果客户端此时尝试再次发送数据,服务器会...

    sms-SMSCAT2019.conf

    此资源为深信服外置短信中心接口,可使用官方的工具smsservice工具,但短信猫放在其它位置通过网络使用外部接口时,频繁出现连接不稳定,[SMS_SP]readn failed: Connection reset by peer,此时主要原因在连接配置上...

    Connection

    根据给定的文件信息,我们可以总结出以下关于SQL数据库连接(Connection)的相关知识点: ### SQL数据库连接(Connection)概述 在Java中,`Connection`对象是JDBC API的核心组件之一,用于与数据库建立连接。它是...

    远程桌面软件:rustdesk

    主要语言:Rust 项目分类:[工具] [应用软件] 项目标签:[桌面应用] 推荐理由:一款免费远程桌面软件,支持多平台,包括Linux、Mac、Windows和Android。它以开箱即用的方式提供远程桌面功能,无需任何复杂的配置。...

    java.net.SocketException: Connection reset 解决方法

    例如,如果服务器端关闭了连接,而客户端还在尝试发送数据,那么客户端会收到"Connection reset by peer"的错误信息。 2. **未关闭的连接导致异常**:另一种情况是一端程序退出,但未正确关闭Socket连接。当另一端...

    XXL-JOB调度系统学习、调度流程、spring生命周期

    XXL-JOB是一个分布式任务调度平台,其设计思想是将调度行为抽象成一个独立的“调度中心”,这个中心不承担具体的业务逻辑,而是负责发起调度请求。任务则被抽象为分散的`JobHandler`,由“执行器”来统一管理和执行...

    Modbus TCP客户端和服务器示例

    **Modbus TCP客户端和服务器示例** 在工业自动化和物联网(IoT)领域,Modbus是一种广泛使用的通信协议,它允许设备之间进行简单的数据交换。本文将深入探讨Modbus TCP,这是一种在网络环境中运行的Modbus变体,尤其...

    platform-tools_r28.0.2-linux adb fastboot

    Fixes flakiness of adb shell port forwarding that leads to "Connection reset by peer" error message. Fixes authentication via ADB_VENDOR_KEYS when reconnecting devices. Fixes authentication—when the ...

    platform-tools-r28.0.2-windows-adb-fastboot

    Fixes flakiness of adb shell port forwarding that leads to "Connection reset by peer" error message. Fixes authentication via ADB_VENDOR_KEYS when reconnecting devices. Fixes authentication—when the ...

    test-connection-reset

    有关详细说明,请参考 。 在本地重现此问题的步骤: 设定环境 npm install 启动服务器 npm start 在单独的终端中运行测试客户端 npm run client ... 因为从上游的角度来看,连接已关闭,所以它为此请求发送了一个[RST...

Global site tag (gtag.js) - Google Analytics