Эта страница переведена машинным переводом. Читайте английский оригинал. English

Библиотека IBSurgeon

Как собрать трассировку Firebird для анализа производительности IBSurgeon

Пожалуйста, обратите внимание: трассировка безопасна, её можно запускать на production-сервере, она не влияет на производительность при использовании рекомендуемой конфигурации ниже.

Эта инструкция описывает использование IBSurgeon Performance Analysis (часть подписки cc.ib-aid.com) для пользователей стандартного Firebird (для пользователей HQbird она доступна в интерфейсе на вкладке “Performance”).

Трассировка для Firebird 5.0, 4.0 и 3.0

Шаг 1 - Файл конфигурации

Скопируйте следующую конфигурацию в файл fbtrace30.conf или скачайте готовый файл отсюда.

Code
database
{
	enabled = true
	time_threshold = 100
	log_connections = true
	log_statement_finish = true
	log_errors = true
	log_initfini = false
	print_plan = true
	#explain_plan = false
	print_perf = true
	max_sql_length = 65000
	max_arg_length = 240
	max_arg_count = 50
}

Сохраните файл в папке без пробелов, например, C:\temp\fbtrace30.conf или /opt/fbtrace30.conf

Шаг 2 - Проверка конфигурации

Запустите fbtracemgr, чтобы проверить, что конфигурация работает:

Windows

Откройте командную строку (запустите cmd.exe), перейдите в папку с Firebird (это может быть C:\Program Files\Firebird\Firebird_3.0. или C:\HQbird\Firebird30) и выполните (используйте свой реальный пароль SYSDBA вместо masterkey)

Code
fbtracemgr.exe -se localhost:service_mgr -user SYSDBA -pass masterkey -start -conf C:\temp\fbtrace30.conf

Linux

Откройте терминал, затем запустите fbtracemgr из папки bin Firebird (/ opt/firebird/bin или /usr/local/bin)

Code
./fbtracemgr -se localhost:service_mgr -user SYSDBA -pass masterkey -start -conf /opt/fbtrace30.conf

В результате вы увидите вывод в командной строке, примерно такой:

Code
Trace session ID 2 started
2021-05-26T10:23:48.5690 (2996:00000000018E0040) ATTACH_DATABASE
        C:\HQBIRD\FIREBIRD30.ECURITY3.FDB (ATT_6189, SYSDBA:NONE, NONE, )

Остановите трассировку с помощью Ctrl-C (и затем Enter, если необходимо).

Шаг 3 - Сбор лога

Если на предыдущем шаге вы не увидели ошибок, запустите трассировку для сбора вывода в файл лога, в примере - c:\temp\log1.log:

Windows

Code
fbtracemgr.exe -se localhost:service_mgr -user SYSDBA -pass masterkey -start -conf C:\temp\fbtrace30.conf > c:\temp\log1.log

Linux

Code
./fbtracemgr -se localhost:service_mgr -user SYSDBA -pass masterkey -start -conf /opt/fbtrace30.conf >    log1.log

Оставьте её работать, чтобы зафиксировать проблемные SQL-запросы на некоторое время (минимум 3-4 минуты, рекомендуется 1 час), затем прервите fbtracemgr с помощью Ctrl-C.

Шаг 4. Загрузка логов

Загрузите полученный файл лога в Trace Visualization на cc.ib-aid.com

Обратите внимание: если размер файла лога превышает 20 МБ, заархивируйте его (стандартным Windows zip, Linux zip или 7zip) и загрузите сжатый лог вместо исходного.

Следующие шаги

Пример анализа лога смотрите здесь: /articles/example-of-performance-analysis

Трассировка для Firebird 2.5

Шаг 1 - Файл конфигурации

Скопируйте следующую конфигурацию в файл fbtrace25.conf или скачайте готовый файл отсюда.

Code
    <database>
        enabled true
	log_connections true
	log_statement_finish true
	log_errors true
	print_plan true
	print_perf true
	time_threshold 200
	max_sql_length 65000
	max_blr_length 500
	max_dyn_length 500
	max_arg_length 80
	max_arg_count 50
Code
    </database>

Сохраните файл в папке без пробелов, например, C:\temp\fbtrace25.conf или /opt/fbtrace25.conf

Шаг 2 - Проверка конфигурации

Запустите fbtracemgr, чтобы проверить, что конфигурация работает:

Windows

Откройте командную строку (запустите cmd.exe), перейдите в папку Bin Firebird (это может быть C:\Program Files\Firebird\Firebird_2.5.in или C:\HQbird\Firebird25.in) и выполните (используйте свой реальный пароль SYSDBA вместо masterkey)

Code
fbtracemgr.exe -se localhost:service_mgr -user SYSDBA -pass masterkey -start -conf C:\temp\fbtrace25.conf

В результате вы увидите вывод в командной строке, примерно такой:

Code
Trace session ID 2 started
2021-05-26T10:23:48.5690 (2996:00000000018E0040) ATTACH_DATABASE
        C:\HQBIRD\FIREBIRD30.ECURITY3.FDB (ATT_6189, SYSDBA:NONE, NONE, )

Linux

Откройте терминал, затем запустите fbtracemgr из папки bin Firebird (/opt/firebird/bin или /usr/local/bin)

Code
./fbtracemgr -se localhost:service_mgr -user SYSDBA -pass masterkey -start -conf /opt/fbtrace25.conf

Шаг 3 - Сбор логов

Если на экране нет ошибок, запустите трассировку для сбора вывода данных в файл, в примере - c:\temp\log1.log:

Windows

Code
fbtracemgr.exe -se localhost:service_mgr -user SYSDBA -pass masterkey -start -conf C:\temp\fbtrace25.conf > c:\temp\log1.log

Linux

Code
./fbtracemgr -se localhost:service_mgr -user SYSDBA -pass masterkey -start -conf /opt/fbtrace25.conf > log1.log

Оставьте её работать, чтобы зафиксировать проблемные SQL-запросы на некоторое время (минимум 3-4 минуты, рекомендуется 1 час), затем прервите fbtracemgr с помощью Ctrl-C.

Шаг 4. Загрузка результатов

Загрузите полученный файл лога в Trace Visualization на cc.ib-aid.com

Обратите внимание: сожмите файл лога, если он больше 20 МБ (стандартным Windows zip, Linux gz или 7zip), и загрузите сжатый лог вместо исходного. Размер сжатого лога ограничен 1 ГБ, файлы логов большего размера будут удалены.

Вам необходимо иметь учётную запись для входа.

После входа нажмите “Upload” в правом верхнем углу виджета “Traces”:

Выбор загрузки трассировки

Затем выберите файл лога трассировки (макс. 120 МБ) на диске и нажмите Upload:

Выбор файла лога для загрузки

Загрузка может занять 1-2 минуты, в зависимости от скорости вашего интернет-соединения и общей связности. Сжатые файлы загружаются быстрее из-за уменьшенного размера!

Затем вы увидите загруженный файл в статусе “Processing”:

Обработка обычно занимает 1-2 минуты. Для просмотра статуса обработки используйте кнопку “Refresh”.

После завершения обработки вы увидите ссылки на сводный отчёт по производительности (колонка “Trace summary report”, ссылка “Html”) и на графическое представление трассировки (колонка и ссылка “Graphs”):

Если вы нажмёте “Html”, откроется новая страница со сводным отчётом по трассировке.

Отчёт содержит списки основных запросов, отсортированных по длительности (т.е. самые долгие запросы), частоте (самые частые запросы), суммарному времени (SQL-запросы, занявшие большую часть времени), выборкам (запросы с наибольшим потреблением CPU), чтениям (чтения с диска) и записям (записи на диск).

Также есть сводка по процессам, где вы можете увидеть приложения, потребляющие большую часть ресурсов.

Если вы нажмёте “Graphs”, вы увидите графическое представление лога трассировки с основными запросами, сгруппированными по каждой минуте (по моменту завершения выполнения запросов).

Если вы нажмёте на конкретный момент времени, вы увидите основные запросы из лога трассировки, их планы, параметры, статистику:

Следующие шаги

Пример анализа лога смотрите здесь: /articles/example-of-performance-analysis