连接重置意味着收到了TCP RST。TCP RST包是指server端告诉你发送前一个TCP包的连接不被识别,可能连接已经关闭,可能端口没有打开,诸如此类。一个重置包就是没有有效负载并且在TCP报头标志中设置了RST位的包。

出现这个Connetion reset报错,主要有以下几种情况:

  • server端已经正常关闭;
  • server端发送了一个Reset包给到client端,可能是连接中断,或者是端口关闭;
  • TCP(传输控制协议)套接字被关闭,因为套接字收到了来自server端的关闭命令;
  • 另一端故意重置了连接。应用软件这样做的情况很少发生,而且通常是不正确的,但对于商业软件来说也不是未知的。
  • 当套接字接收缓冲区中有未读数据时,关闭套接字也可能导致该错误。
  • 在某些情况下,中间的防火墙甚至远程主机本身可能“忘记”这个TCP连接。如果此TCP连接很长时间没有发送任何数据(120分钟是常见的超时时间),或者因为某一端重新启动并丢失了有关活动连接的信息,就会发生这种情况。在这些失效连接中发送数据也会导致RST。
  • 有时这也可能是由于沉重的负载导致Server对消息进行排队,在它能够读取消息之前,消息在客户端超时。因此,您还可以检查服务器健康状况并记录导致此错误的过度负载。

PS:文中说的server端和client端,只是一个相对的概念,请读者别纠结。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐