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: DB2
Category:
DB2 |
No comments »