db2top – утилита для мониторинга DB2

Date April 10th, 2010 Author Vitaly Agapov

Мы достигли точки критической массы, когда количество памяти, которую мы экстериоризировали в книги и базы данных, сейчас превышает количество памяти, хранящейся внутри совокупности наших биологических тел. Другими словами, «снаружи» памяти больше, чем существует внутри «всех нас». Мы перепрограммировали свою сущность.
— Дуглас Коупленд // Рабы «Майкрософта»

Сегодня речь пойдет о консольной утилите для мониторинга базы данных DB2 в реальном режиме времени – db2top. Обычно для проверки состояния или выявления проблем в базе данных достаточно использования снапшотов, но в некоторых случаях может возникнуть необходимость более оперативно посмотреть параметры базы в динамике. В этом как раз и поможет db2top, умеющий вычислять изменения параметров в снапшотах с течением времени и предоставлять информацию в удобном наглядном виде. Зная некоторые особенности утилиты, можно облегчить себе задачи мониторинга и траблшутинга.

Рассматриваемая версия – DB2 9.5

Синтаксис команды

Подробно информацию обо всех ключах и параметрах команды db2top можно получить в контекстной справке, набрав db2top -h. А в основном команда будет выглядеть так:

db2top [-d dbname] [-n nodename] [-u username] [-p password] [-V schema]

Если работа производится от пользователя-владельца инстанса и на базе данных с одной нодой, то чаще всего команда упрощается до

db2top [-d dbname]

При этом утилита запустится в интерактивном режиме

Это основной экран, в котором можно выбрать дальнейшее действие. На нём представлена следующая информация:

  • [/]: Вращающаяся палочка указывает на нормальную работу, ожидание нового снапшота. Застывшая палочка – ожидание ответа от DB2;
  • 12:54:44: Текущее время;
  • refresh=2secs: Время обновления снапшота. Восклицательный знак вместо цифры указывает на то, что обработка снапшота занимает больше времени, чем задан интервал обновления;
  • (0.001): Время, затраченное на обработку снапшота;
  • Linux: платформа;
  • part=[1/1]: Текущий partition (разница между партишенами и нодами описывалась в статье про кластеризацию DB2);
  • d=Y/N: Дельта- или кумулятивный снапшот (кумулятивный включается ключом -k);
  • a=Y/N: Только активные или все объексты (только активные включаются ключом -a);
  • e=Y/N: Режим extended;
  • p=ALL: Все partitions (можно задать конкретный ключом -P);
  • qp=off/on: Состояние Query Patroller для базы данных (управляется параметром DYNMGMT);

db2top в пакетном режиме

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

db2top -d temp -f collect.file -C -m 10 -i 15
[13:15:02] Starting DB2 snapshot data collector, collection every 15 second(s), max duration 10 minute(s), max file growth/hour 100.0M, hit <CTRL+C> to cancel…
[13:15:02] Writing to ‘collect.file’, should I create a named pipe [N/y]? N
[13:15:11] Creating ‘collect.file’ as a normal file

Данная команда в течение 10 минут раз в 15 секунд будет сохранять в файл снапшоты с базы данных. Далее можно будет анализировать собранные данные:

db2top -d temp -f collect.file -b l -A

Опции ключа -b позволяют выбрать анализируемые параметры, а опция -A включает автоматический анализ:

-b : background mode
option: d=database, l=sessions, t=tablespaces, b=bufferpools, T=tables, D=Dynamic SQL, s=Statements, U=Locks, u=Utilities, F=Federation, m=Memory -X=XML Output, -L=Write queries to ALL.sql, -A=Performance analysis

То есть ключ -b l позволит проанализировать наиболее активные и прожорливые сессии.

Также команду можно запустить в режиме воспроизведения, начиная с нужного момента времени:

db2top -d temp -f collect.file /HH:MM:SS

Мониторинг базы данных – Database(d)

На этом экране можно просматривать общие параметры базы данных. В верхней части указывается доля использованных ресурсов (сессии, память, дисковое пространство под логи, FCM). Использование того или иного ресурса, близкое к 100%, указывает на проблемы.

Из полезных параметров стоит отметить:

  • LockUsed и LockEscals указывают на проблемы с блокировками;
  • L_reads (logical), P_reads (physical) и A_Reads (asynchronous) указывают на соотношение чтения данных с диска и из буферных пулов памяти. Чем выше A_Reads и HitRatio, тем быстрее база будет отвечать на запросы;
  • SortOvf (Sort Overflow) указывает на проблемы с переполнением SORTHEAP;
  • AvgPRdTime, AvgDRdTime, AvgPWrTime и AvgDWrTime показывают время обращения к I/O подсистеме.

Мониторинг тейблспейсов – Tablespace (t)


На этом экране довольно много столбцов – для их просмотра можно пользоваться стрелками “влево” и “вправо”. Здесь параметры указываются отдельно для каждого тейблспейса в отдельности. Некоторые из этих параметров присутствуют и на экране Database (d), но там они усредняются.

Важные параметры:

  • Delta logical reads(writes) и Delta physical reads(writes) указывают на степень загруженности каждого тейблспейса
  • Avg RdTime и Avg WrTime указывают время чтения и записи;
  • Space Use, Total Size и % Full указывают на реально занимаемый объем каждым из тейблспейсов

Dynamic SQL (D)

На этом экране можно получить информацию о закешированных SQL-запросах. Здесь также много столбцов, просмотреть которые можно с помощью стрелок на клавиатуре. Вот важные параметры:

  • Num Execution показывает, сколько раз запрос выполнялся;
  • AvgExecTime – среднее время выполнения запроса;
  • AvgCpuTime – затраты времени CPU;
  • RowsRead и RowsWritten показывают поведение запроса, то есть сколько записей он считывает и записывает;
  • AvgSortPerExec показыват количество сортировок, необходимых для выполнения запроса;

В первых двух столбцах указываются хэш-строка запроса и первые 30 символов самого запроса. просмотреть SQL-запрос целиком можно, нажав L и введя хэш-строку запроса:

Выбрав опцию e или x, можно запустить внешние утилиты db2expln или db2exfmt для вывода подробной информации о запросе.

Мониторинг сессий – Session (l)

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

  • CPU% Total, IO% Total, Mem% Total показывают количество ресурсов, затрачиваемых на каждый из сеансов;
  • Application Status показывает текущее состояние подключения, здесь же можно видеть и блокировки, если таковые присутсвуют;
  • Application Name, Os User и ClientNetName позволяют определить откуда и с каким логином происходит подключение к БД;
  • Locks held, Sorts и Log Used показывают удерживаемые сессие блокировки, выполняемые сортировки и используемое пространство под логи;
  • По аналогии с другими экранами можно посмотреть затрачиваемые ресурсы, время подключения и т.д.

Мониторинг буферных пулов – Bufferpool (b)

На этом экране даётся информация обо всех буферных пулах базы данных. Информация касается скорости записи и считывания, Hit Ratio, асинхронных считываний и хранящихся в памяти страницах.

Мониторинг блокировок – Lock (U)

Проблемы в базе данных чаще всего связаны я блокировками. И мониторить их с помощью db2top достаточно удобно. Если в базе появляются блокировки, то Application Status показывает состояние Lock Waiting. Здесь же можно посмотреть время блокировки, id приложения-инициатора блокировки, блокирует ли само приложение какие либо ресурсы (таблицы или строки), сам объект блокировки и т.д.

Если приложений достаточно много, и каждое из них может создавать блокировки для других приложений, то могут возникать цепочки блокировок, когда приложение блокирует одну таблицу, другое приложение, ожидая освобождения этой таблицы, блокирует другую таблицу и так далее. проследить такие цепочки до того приложения, из-за которого весь сыр-бор случился может быть нелегко, но db2top умеет динамически строить такие цепочки. Для этого потребуется команда L в окне мониторинга блокировок.

Мониторинг таблиц – Table (T)

На этом экране выводится информация о таблицах. Зеленым цветом показаны таблицы, к которым производится доступ, а белым – неактивные в настоящий момент таблицы. В выводимой информации можно найти следующие данные: количество обращений на запись и чтение, количество страниц данных в таблице, тип таблицы, тейблспейс и размер таблицы, а также количество Rows Overflows в секунду. Последнее значение может указывать на проблемы с фрагментацией таблицы.

Мониторинг узких мест – Bottlenecks (B)

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

В нижней части окна указываются узкие места в каждом из серверных ресурсов, то есть какое из приложений или сессий этот самый ресурс отъедает. Все ресурсы тут достаточно понятные, откомментирую только TQ r/w – это наибольшее количество считанных или записанных строк по запросу к таблицам.

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

Просмотр приложения

На любом из экранов в db2top можно с помощью кнопки a и идентификатора приложения (Application Handle) попасть на экран приложения. Здесь показывается статус приложения, а также выполняющийся SQL-запрос. Если принято решение на завершение этой сессии (например, при чрезмерном расходовании ресурсов или при большом количество блокировок), это можно сделать с помощью кнопки f. Это будет аналог команды force applications.

Чтобы вернуть назад в основное окно, надо нажать кнопку r.

На сегодня всё.

Tags:
Category: DB2 | No comments »

Comments

Leave a comment

 Comment Form