понедельник, 3 декабря 2012 г.

Утилиты Linux для анализа производительности

Такие утилиты как top или vmstat знакомы даже малоопытным пользователям. Без труда с их помощью можно решать многие проблемы с производительностью приложений на платформе Linux/UNIX. И чаще всего это касается уже традиционных веб-приложений на основе LAMP стэка.
Однако для специалистов более высокого уровня данных утилит явно недостаточно. Проблемы с быстродействием приложений не всегда отличаются очевидностью и простотой, а потому вполне уместно рассмотреть наиболее важные средства для анализа производительности.
htop
htop представляет собой довольно мощную альтернативу стандартной утилите top. Отличается он в первую очередь более удобным интерфейсом и возможностью быстро настроить отображение информации о системных ресурсах.
С точки зрения мониторинга процессов все также реализовано на высоком уровне. htop выводит в режим реального времени данные по использованию процессора и памяти, а также другие системные метрики (всего их доступно более 50) для каждого активного процесса и потока. В отличии от top предусмотрена возможность вертикального и горизонтального скроллинга, а значит ничто не ускользнёт от вашего внимания.
Пример работы утилиты htop
Также с помощью htop можно, например, изменить приоритет процесса или вовсе его завершить.
dstat
dstat в свою очередь является улучшенной альтернативой таким утилитам как vmstat или sar, а заодно и таким известным инструментам как iostat и ifstat.
Суть работы dstat — сбор усредненной информации об использовании системных ресурсов с заданным интервалом вывода данных. Среди кандидатов для анализа информация об утилизации процессора, памяти, сети, диска, файлов подкачки и т.д.
Пример работы утилиты dstat
Процесс мониторинга системных ресурсов организован довольно просто и, главное, наглядно. А среди особых возможностей dstat — запись собираемых метрик в CSV файлы, что крайне важно для последующего анализа.
iotop
Безусловно, такие утилиты как iostat являются эффективным решением для анализа дисковой активности. Однако iotop в этом отношении является еще более полезным инструментом.
Пример работы утилиты iotop
iotop позволяет выводить информацию о дисковой активности для каждого потока в системе (или для списка интересующих процессов). Информация может выводиться либо в режиме реального времени, либо в аккумулятивном представлении.
iperf
iperf является одним из самых простых решений для измерения производительности сети между двумя отдельно взятыми узлами.
При этом на одном из узлов iperf запускается в режиме сервера
iperf -s
а на другом в режиме клиента:
iperf -c server_hostname
По умолчанию замер осуществляется на протяжении десяти секунд. С помощью различных опций можно задать отличный от стандартного интервал измерения или альтернативно объем передаваемых данных.
Пример работы утилиты iperf
Наличие различных TCP параметров, а также возможность запуска в UDP-режиме делает iperf исключительно полезным инструментом для анализа сетевых проблем.
mtr
mtr — это бесплатная утилита, одновременно сочетающая в себе возможности программ ping и traceroute.
Пример работы утилиты mtr
В непрерывном режиме mtr выводит информацию о маршруте для заданного имени хоста, а также набор статистических данных о пингах до каждого промежуточного узла. Данный инструмент крайне полезен для диагностики проблем с маршрутизацией или сетевыми задержками.
curl
curl — это, пожалуй, наиболее известный среди рассматриваемых инструментов. Он позволяет загружать данные по одному из 21 поддерживаемых протоколов.
Пример работы утилиты curl
curl можно использовать, например, для анализа ответов веб-серверов или HTTP заголовков. Бесчисленное количество опций в свою очередь позволяют сформировать практически любой запрос.
iptraf
Время от времени приходится сталкиваться с ситуациями, когда приложение устанавливает сетевые соединения, о которых мы даже не подозреваем. Для диагностики подобных ситуаций полезным может стать монитор сетевых соединений — iptraf.
Работать с iptraf можно в четырех режимах:
  • мониторинг IP трафика;
  • общая статистика для всех сетевых интерфейсов;
  • детализированная статистика для отдельного взятого интерфейса;
  • статистические срезы (в зависимости от порта или размера пакетов);
  • LAN мониторинг;
Пример работы утилиты iptraf
Разумеется, ко всему этому прилагается гибкость настройки, сетевые фильтры и возможность запуска в фоновом режиме. В целом, iptraf — это довольно эффективный, но в тоже время простой в использовании инструмент.
Для более серьезного анализа имеет смысл прибегнуть к таким решениями как tcpdump.
httperf
Зачастую анализ проблем с производительностью невозможен без запуска нагрузочных тестов. При этом иногда даже не требуются сложные тесты и детальными сценарии, а достаточно лишь сгенерировать адекватный уровень нагрузки с помощью потока HTTP запросов.
httperf относится к числу подобных консольных генераторов нагрузки. К примеру, следующий вызов:
httperf --server=hostname --rate=10 --num-conns=1000
отправит 1000 запросов к целевому серверу с интенсивностью 10 запросов в секунду. И если поставленной задаче не помешает, к примеру, ограничение пропускной способности сети, то можно будет получить базовую информацию о том, как сервер справился с нагрузкой.
Пример работы утилиты httperf
multitail
Наверняка многим приходилось сталкиваться с использованием утилиты tail в follow формате, при котором в режиме реального времени выводится не только конец файла, но и обновления в нем по мере роста. Но что если требует одновременный просмотр нескольких логов баз данных и веб-серверов?
multitail — идеальное решение для подобных задач. Подобно работе утилиты screen multitail выводит содержимое файлов разбивая терминал на несколько окон (возможна как вертикальная, так и горизонтальная ориентация).
Удобно? А теперь представьте, что все это дополнено следующими возможностями:
  • фильтрация и подсветка информации с использованием регулярных выражений;
  • подавление дублирующих записей;
  • визуальное и звуковое оповещение при появления заданного фрагмента текста;
  • возможность вертикального и горизонтального скроллинга.
И это далеко не полный список возможностей. В любом случае, не лишним будет иметь подобный инструмент на вооружении.

0 коммент.:

Отправить комментарий