【问题标题】:Why would socket.write hang indefinitely?为什么 socket.write 会无限期挂起?
【发布时间】:2021-09-14 00:27:58
【问题描述】:

什么会使对TCPSocket 的写调用无限期挂起?

lotsOfBytes = # a really large number of bytes, like 1 or 2 MB of data

socket = TCPSocket.new # some config
socket.write(lotsOfBytes) # this line hangs

我正在尝试debug an issue,其中get_multi 操作发送到具有大量键的memcached 无限期挂起,并且它在line that resembles 上执行此代码sn-p。我试图更好地理解构建这个库的低级套接字是如何工作的。

【问题讨论】:

    标签: ruby sockets memcached


    【解决方案1】:
    • tcpdump?有没有尝试发送任何东西?
    • netstat - 查看输出队列。
    • 它是否适用于您环境中的少量字节?

    【讨论】:

      【解决方案2】:

      您的 TCPSocket 上以下属性的值是什么:

      • keep-alive 已激活,设置了什么值?
      • 设置了超时,设置了什么值?

      如果您要进行 Wireshark 转储,那就更好了,所以在挂起连接之前看看会发生什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-29
        • 2011-05-07
        相关资源
        最近更新 更多