Socket hang up 是什么?

4 篇文章 0 订阅
2 篇文章 0 订阅

“Socket hang up” 是一个常见的网络错误,第一次是在项目的限流测试中遇到这个问题,hang up 有挂断、挂起之意,通常表示在客户端和服务端建立连接或者数据传输过程中,连接被意外地关闭了。

什么原因

导致这个问题的原因有很多:

  1. 服务端关闭连接: 服务器可能因为各种原因决定关闭连接,比如服务器错误、资源耗尽、配置的超时时间已到
  2. 客户端关闭连接:客户端可能因为完成请求、检测到错误或用户中断操作而关闭连接
  3. 网络问题:网络不稳定或中断可能导致连接被异常关闭
  4. 超时:如果网络操作耗时过长,超过了设定的超时时间,系统可能会关闭socket
  5. 请求错误:请求的头部信息、参数、方法等不正确也会导致连接异常关闭

可以通过检查网络连接、查看日志、检查客户端和服务器的配置(超时时间等)、审查网络连接的代码等方面定位错误。

ECONNRESET VS ETIMEDOUT

经过排查,与"Socket hang up"同步出现的报错信息还有"ECONNRESET"和"ETIMEDOUT",两者都是网络错误代码且都与请求超时有关,但需要区分一下两者的区别。

ECONNRESET

“ECONNRESET"代表"Connection reset by peer”,即在TCP/IP网络通信中,连接被对等方(通常是服务器)重置。
常见原因:

  • 服务器内部错误或资源不足,无法继续处理请求
  • 服务器崩溃或重启
  • 服务器处理超时,没有数据传输
  • TCP连接中的一方发送了不符合协议的数据包

    Server处理超时或kill,Client没有得到响应,认为当前socket已结束
ETIMEDOUT

“ETIMEDOUT"代表"Connection timed out”,即在TCP/IP网络通信中,连接尝试因超时而失败。
常见原因:

  • 客户端尝试连接超时
  • 客户端传输数据超时
  • 客户端或服务端的网络超时设置过短

    Client与Server建立连接超时

总结:当网络环境、请求信息无误、设备资源充足时,产生问题的主要原因即超时时间设置过短。
由于是在接口的限流与超时测试中遇到这个问题,所以很容易能够定位到问题产生的原因,写下这篇文章做一个问题记录,便于读者遇到相同问题时明确排查方向。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值