Write blocking forever on a TCP connection


(Sanket Deshpande) #1

Hello there,

I have a MQTT broker running under pretty high load. I don’t have access to any connected clients since they all are external clients. But I’m seeing an interesting thing in the stack trace. I’m forwarding a publish message to one of the TCP clients and a call to a Write is blocking forever. Here’s part of the stack trace:

goroutine 108 [IO wait, 54 minutes]:
internal/poll.runtime_pollWait(0x7f679a35e910, 0x77, 0xffffffffffffffff)
/usr/local/go/src/runtime/netpoll.go:182 +0x56
internal/poll.(*pollDesc).wait(0xc000505998, 0x77, 0x200, 0x300, 0xffffffffffffffff)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x9b
internal/poll.(*pollDesc).waitWrite(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:96
internal/poll.(*FD).Write(0xc000505980, 0xc002b4ac00, 0x2dd, 0x300, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:276 +0x26e
net.(*netFD).Write(0xc000505980, 0xc002b4ac00, 0x2dd, 0x300, 0x300, 0x4, 0x300)
/usr/local/go/src/net/fd_unix.go:220 +0x4f
net.(*conn).Write(0xc0009e8f80, 0xc002b4ac00, 0x2dd, 0x300, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:189 +0x69

Any idea why this would be happening? I’ve searched numerous posts online and no one has come across this issue. Any possible solutions to this problem?

Please let me know if you want any more details.

Thanks