Skip to content

记一次坑爹的socket连接异常 #39

@ohroy

Description

@ohroy

事情是这样的,在docker里,socket长链接建立成功后,无论发送什么,都得不到响应。同样的bin跑在宿主机则没有问题。
非常的神奇。
冷静分析,造成此问题的可能因素有:

  • docker内网络配置有误
  • 代码有逻辑bug,实际没有发送成功
  • 时区不一致影响双方握手
  • 代码无误,但提交到缓冲区后系统不读取
  • 玄学

为了解决此问题,逐一验证,最终证明是玄学。
证明过程如下:
试图使用WireShark抓包分析,然而根本没有相关连接被建立。同时宿主机连接正常,排除服务端出错。
docker里ping和curl能正常被WireShark捕获,且响应正常
以上证明与网络无关,因为根本没有数据包被发出。
调试代码,分析后确实将数据流给到了系统,系统已经完成drain,然而就是不发。。
换了几个不通系统的底包ubuntucentos分别尝试后,均无法解决。
将docker部署在其他电脑上后,工作正常。

由此,得出结论,我的电脑有问题!至于什么问题,可能是docker的bug,也可能是玄学。

docker ver

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions