Я слежу за стеком 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.