Существует несколько ключевых команд Linux, которые системные администраторы используют ежедневно для мониторинга производительности своих компьютеров и серверов, устранения проблем с производительностью, а также для прогнозирования и предотвращения узких мест в производительности.
В этой статье мы рассмотрим семь команд, которые помогут вам отслеживать использование процессора и памяти, операции дискового ввода-вывода, сетевую активность, конфигурацию портов и многое другое. Эти команды позволяют вам легко идентифицировать и останавливать процессы, которые потребляют больше ресурсов, чем ожидалось, и вызывают проблемы с производительностью. Мы также подробнее рассмотрим синтаксис и различные доступные опции, чтобы лучше понять эти команды.
Даже если вы не системный администратор, изучение этих команд поможет вам лучше понять, что происходит с вашим компьютером.
top – одна из наиболее часто используемых системных администраторов. На очень высоком уровне команда показывает время безотказной работы системы, загрузку процессора, количество потоков, использование памяти (общее, использованное, свободное и т.д.), список запущенных процессов и многое другое. На рисунке 1 показан скриншот верхнего пользовательского интерфейса, сделанный в Ubuntu 18.04.
На рисунке 1 показано, что здесь содержится много информации и множество опций для фильтрации списка задач, завершения процессов, сортировки списка и многого другого. Например, мы можем отсортировать список задач по столбцам %CPU или %MEM, чтобы легко определить, какие процессы потребляют больше всего CPU или памяти. Используйте эти команды для сортировки задач по проценту памяти или CPU:
top -o +%MEM top -o +%CPU
На рисунке 2 показаны процессы, отсортированные по проценту используемой памяти в порядке убывания.
Сортировка по загрузке процессора или памяти позволяет нам идентифицировать процессы, которые могут вызывать проблемы с производительностью. Затем мы можем легко отключить эти процессы из того же самого удобного пользовательского интерфейса.
vmstat сообщает нам все, что нам нужно знать о виртуальной памяти. Система начинает использовать виртуальную память, когда у нее заканчивается физическая память. Следовательно, для начала виртуальная память всегда будет равна нулю. Наряду со статистикой виртуальной памяти vmstat предоставляет нам гораздо больше информации о системных процессах, прерываниях, блочных операциях ввода-вывода, дисках, подкачке, планировании процессора и многом другом.
На рисунке 3 показан вывод vmstat без каких-либо переданных параметров. Команда:
vmstat
Как вы можете видеть, он не такой плотный, как верхний пользовательский интерфейс. Но всего с несколькими опциями мы все равно можем получить всю необходимую информацию. Например, передача параметра a дает нам информацию об активной и неактивной памяти, как показано на рисунке 4. Команда:
vmstat -a
Передача опции s предоставит нам всю необходимую информацию о расписании процессора, как видно из рисунка 5. Команда:
vmstat -s
В Linux все зависит от файлов. Например, сетевые адаптеры — и даже любые USB—аксессуары, которые мы подключаем, – управляются с помощью файлов. Итак, любые проблемы с оборудованием или даже программным обеспечением на компьютере с Linux должны отлаживаться с помощью файлов. lsof (или список открытых файлов) – удобная команда для быстрого просмотра списка открытых файлов и связанных процессов.
На рисунке 6 показан усеченный список выходных данных команды lsof. Эта таблица предоставляет нам много информации, включая команду, используемую для запуска процесса, которому принадлежит файл, PID, пользователя, которому принадлежит процесс, тип и размер файла и многое другое.
Мы можем использовать различные опции с командой для фильтрации файлов для конкретного пользователя или по файлам, используемым определенным портом, и так далее. К ним относятся:
lsof -u root
lsof -i TCP:22
На рисунке 7 показан список файлов, открытых пользователем root и принадлежащих ему.
Для устранения неполадок в сети или проверки трафика какого-либо конкретного приложения или службы на компьютерах используйте команду tcpdump. На рисунке 8 показан снимок экрана с выводом команды.
Как видно из скриншота, tcpdump предоставляет IP-адрес источника, IP-адрес назначения, тип используемого протокола, количество передаваемых байт и многое другое. Эта информация полезна при попытке отследить сетевой вызов или проверить необычную сетевую активность.
Эта команда также удобна для проверки, совершает ли пакет или служба вызовы неавторизованным хостам или IP-адресам. Если это так, он также проверяет, не передаются ли какие-либо несанкционированные конфиденциальные данные, которых не должно быть, или не загружаются ли какие-либо дополнительные пакеты, которые могут привести к угрозам безопасности.
netstat – это команда, используемая для определения открытых портов, подключений к внешним IP-адресам и состояния подключения. На рисунке 10 показан скриншот вывода команды.
Команда предоставляет используемый протокол, локальный и внешний IP-адреса, а также состояние соединения. Это помогает нам выяснить, открыты ли у процесса все его порты и используются ли они или нет. Это может помочь в устранении многих сетевых проблем.
Эта команда также помогает устранить потенциальные проблемы с сетевой безопасностью. Сообщалось о многих случаях нарушений безопасности, когда сетевой порт был открыт в общедоступном Интернете, что приводило к атаке. Итак, всякий раз, когда мы устанавливаем или развертываем новую службу, нам необходимо убедиться в отсутствии излишне открытых портов, которые могут привести к угрозам безопасности.
Используя netstat, мы также можем проверить таблицу маршрутизации сети. Это можно сделать nr, как показано на рисунке 11.
Как мы уже упоминали, все в компьютере с Linux управляется с помощью файлов. Эти файлы записываются на диски, подключенные к компьютеру. Всякий раз, когда запускается процесс, наряду с процессором и памятью процесс также потребляет пропускную способность диска. Другими словами, каждый процесс выполняет ряд операций ввода-вывода каждую секунду. И, как и у других ресурсов, у этой пропускной способности есть ограничение.
iostat используется для мониторинга такой активности ввода-вывода на всех дисках и разделах компьютера. Он также обеспечивает загрузку процессора для таких операций. Используя iostat , мы можем решить, нужно ли нам изменить конфигурацию системы, чтобы обеспечить лучшие или сбалансированные операции ввода-вывода. На рисунке 12 показан вывод iostat на компьютере с Ubuntu 18.04.
Как вы можете видеть, первая часть выходных данных представляет собой среднюю загрузку ЦП, разделенную на разделы, включая пространство пользователя, системное пространство, кражу ЦП, простой ЦП и ожидание ввода-вывода. Столбец %iowait сообщает нам, тратит ли процессор много времени на ожидание завершения операций ввода-вывода. Большое число здесь указывает на то, что ввод-вывод выполняется медленно или задерживается в каком-либо другом процессе.
В следующем разделе перечислены все устройства, подключенные к компьютеру, и соответствующие TPS (передачи в секунду), числа считываемых и записываемых килобайт и многое другое. Эти цифры подскажут нам, требуется ли дальнейшая настройка для повышения производительности ввода-вывода.
Точно так же, как мы использовали бы top для мониторинга процессов, мы можем использовать iotop для мониторинга всех потоков, выполняющих операции ввода-вывода, и потребляемой ими пропускной способности.
В верхнем левом разделе этой таблицы приведены общие и фактические данные о прочитанном с диска, в то время как в верхнем правом разделе приведены общие и фактические данные о записи на диск. В этих разделах у нас есть список потоков, запущенных на компьютере, вместе с идентификатором потока (TID), приоритетом потока, владельцем (пользователем) потока, пропускной способностью для чтения и записи с диска, процентом времени, затраченного на подкачку, процентом времени, затраченного на ожидание ввода-вывода, а также командой для потока.
С другой стороны, вы также заметите, что не все эти потоки выполняют операции ввода-вывода. Чтобы отфильтровать список, чтобы показать только такие потоки, используйте опцию o или только, как показано ниже:
iotop -o
или
iotop --only
На рисунке 14 ниже показаны выходные данные этих команд.
Эта команда помогает нам увидеть список потоков, которые занимают слишком большую пропускную способность ввода-вывода и заставляют другие потоки ожидать ввода-вывода, тем самым останавливая другие процессы или пользователей.
В Linux доступны мощные команды для мониторинга и отладки любых проблем с производительностью. Однако простого знания синтаксиса и опций этих команд недостаточно. Нам также необходимо знать, какую команду использовать в данном сценарии. Этот список должен послужить отправной точкой для системных администраторов Linux, чтобы лучше понимать свои компьютеры.