Я пытаюсь разобраться в ситуации с сервером, над которым работаю. Моя проблема кратко изложена здесь:
[root@server ~]# cat /proc/net/sockstat
sockets: used 2338
TCP: inuse 15 orphan 0 tw 29488 alloc 438 mem 1077
UDP: inuse 1 mem 1
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0
[root@server ~]# netstat -ant | wc -l
221
[root@server ~]# netstat -ant | grep WAIT | wc -l
203
[root@server ~]# ss -a | wc -l
341
Обратите внимание на высокий tw
ценность в /proc/net/sockstat
. Однако количество сокетов, о которых сообщается при использовании другими инструментами, отличается от количества сокетов, указанных в sockstat
на несколько порядков. Я не совсем понимаю, что это значит.
На этом сервере работает несколько микросервисов, которые, в свою очередь, обрабатывают / создают соединения с другими сервисами. Эти соединения могут быть или не быть локальными (например, «тот же сервер»). Поскольку это производственный сервер частной организации, я не могу размещать здесь все его данные и конфигурации. Тем не менее, я готов публиковать соответствующие фрагменты информации, когда люди об этом просят.
Имея это в виду, я пытаюсь найти какое из текущих соединений на сервере может иметь столько сокетов, связанных в состоянии TIME_WAIT.
Пока что, ища в Интернете способ сопоставления этих данных, я обнаружил, что многие люди объясняют динамику, лежащую в основе TIME_WAIT
. Но это затем идет на настройку сервера, чтобы избежать ситуации, и это больше вопрос о том, как отслеживать соединения, сообщаемые с помощью различных инструментов. Выявив проблемное соединение, я могу диагностировать несколько возможных ситуаций, поскольку я знаю задействованное программное обеспечение и то, что оно делает: я могу узнать, какие соединения выполняются, как и почему. Итак, я хотел бы сосредоточиться на связи между общими инструментами сетевого состояния (например, netstat
и ss
) дай мне, и что я вижу в /proc/net/sockstat
.
Итак, как я могу сопоставить эти данные?