Назад | Перейти на главную страницу

Мониторинг TCP на сервере: сравнение netstat и lsof?

Я слежу за стеком TCP на сервере, надеясь в общих чертах выявить проблемы с приложением на коробке.

Моя первая склонность - измерить количество сокетов во всех отчетных состояниях (LISTEN, ESTABLISHED, FIN_WAIT2, TIME_WAIT и т.д.) и обнаружить некоторые аномалии.

Товарищ по команде предполагает, что lsof был бы лучшим инструментом, чтобы увидеть, в каком состоянии находятся TCP-стеки.

Какие-нибудь предпочтения или советы от специалистов по сбоям сервера?

Я предпочитаю lsof, потому что его вывод одинаков для всех платформ, на которых он работает. Однако вы можете получить практически одинаковую информацию из обеих программ. Думаю, дело в личных предпочтениях.

Моим первым заключением было бы использовать netstat -ptan который предоставит вам всю информацию, которую вы ищете. Наверное труба сортировать и уникать. Следующее должно дать вам хорошее количество состояний сокета ».

netstat -ptan | awk '{print $6 " " $7 }' | sort | uniq -c

Я думаю, что это больше личное предпочтение, так как с небольшой настройкой (и правильными параметрами команд) вы можете получить примерно ту же информацию от любого из них.

Однако, если вы хотите отслеживать количество подключений в различных состояниях, я бы не стал делать это с помощью одноразового инструмента командной строки. Я бы использовал что-то, что может быть в тренде, чтобы вы могли просматривать его с течением времени. Что-то вроде munin было бы очень полезно, так как оно отображало бы его во времени (наряду с показом другой потенциально полезной системной статистики).

Устранение неполадок в приложении всегда проще, если у вас есть хорошая информация о самом устройстве и о том, как он работает (как при проблемах, так и при их отсутствии).

Проверять, выписываться dstat и запустить с:

% sudo dstat --tcp

Еще лучше, если вы хотите проанализировать вывод, вы можете записать его в CSV с помощью --output.