Я запускаю Netcat на сервере LTS Ubuntu 18.04.3, чтобы прослушивать порт 469. Этот сервер часто получает TCP-запросы от других машин на порт 469, который я использую для мониторинга времени безотказной работы сервера. Я запускаю Netcat с:
nc -kl 469
и я вижу, что процесс идет с:
$ ps -aux | grep 469
который производит этот вывод:
корень 11041 0,0 0,1 13596 1060? S 31 августа 0:21 nc -kl 469`
Эта система работает около 24 - 28 часов, но затем Netcat перестает отвечать. После расследования я считаю, что проблема в том, что буфер Recv-Q «заполняется». Обычно буфер Recv-Q равен нулю до момента, когда Netcat перестает отвечать. После того, как он перестал отвечать, буфер Recv-Q имеет значение 2 (вместо обычного 0). Я могу проверить это с помощью "ss" следующим образом.
$ ss -tnl
а потом я вижу это, где виден ненормальный Recv-Q из 2.
$ ss -tnl
Состояние Recv-Q Send-Q Local Address: Port Peer Address: Port
СЛУШАТЬ 0 128 0.0.0.0:22 0.0.0.0:*
СЛУШАТЬ 0 64 0.0.0.0:42587 0.0.0.0:*
СЛУШАТЬ 0 128 0.0.0.0:46663 0.0.0.0:*
СЛУШАТЬ 0 128 0.0.0.0:111 0.0.0.0:*
СЛУШАТЬ 2 1 0.0.0.0:469 0.0.0.0:*
СЛУШАТЬ 0 128 127.0.0.53% lo: 53 0.0.0.0:*
СЛУШАТЬ 0 128 [::]: 22 [::]: *
СЛУШАТЬ 0 64 [::]: 44057 [::]: *
СЛУШАТЬ 0 128 [::]: 55085 [::]: *
СЛУШАТЬ 0 128 [::]: 111 [::]: *
У нас есть несколько других серверов Ubuntu, на которых Netcat также прослушивает порт 469 точно таким же образом. Они НЕ терпят неудачу - они работают уже несколько недель. Но этот сервер снова и снова выходит из строя, даже после перезапуска, и всегда примерно через 24+ часа. Единственное различие между этим и другими серверами (которое я могу придумать) заключается в том, что на этом сервере также установлен том nfs (как видно из прослушивания порта 111 выше).
Что могло быть причиной этого? Могу ли я каким-то образом очистить Recv-Q (из bash), чтобы я мог очищать его с некоторым регулярным интервалом (в качестве временного исправления)? Любая помощь очень ценится.