Как собрать трассировку Firebird для анализа производительности IBSurgeon
Пожалуйста, обратите внимание: трассировка безопасна, её можно запускать на production-сервере, она не влияет на производительность при использовании рекомендуемой конфигурации ниже.
- Em Português - Como coletar Firebird Trace para IBSurgeon Performance Analysis?
- In deutscher Sprache - Wie erfasse ich Firebird-Tracees für die IBSurgeon-Leistungsanalyse?
Эта инструкция описывает использование IBSurgeon Performance Analysis (часть подписки cc.ib-aid.com) для пользователей стандартного Firebird (для пользователей HQbird она доступна в интерфейсе на вкладке “Performance”).
Трассировка для Firebird 5.0, 4.0 и 3.0
Шаг 1 - Файл конфигурации
Скопируйте следующую конфигурацию в файл fbtrace30.conf или скачайте готовый файл отсюда.
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)
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)
./fbtracemgr -se localhost:service_mgr -user SYSDBA -pass masterkey -start -conf /opt/fbtrace30.conf
В результате вы увидите вывод в командной строке, примерно такой:
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
fbtracemgr.exe -se localhost:service_mgr -user SYSDBA -pass masterkey -start -conf C:\temp\fbtrace30.conf > c:\temp\log1.log
Linux
./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 или скачайте готовый файл отсюда.
<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
</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)
fbtracemgr.exe -se localhost:service_mgr -user SYSDBA -pass masterkey -start -conf C:\temp\fbtrace25.conf
В результате вы увидите вывод в командной строке, примерно такой:
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)
./fbtracemgr -se localhost:service_mgr -user SYSDBA -pass masterkey -start -conf /opt/fbtrace25.conf
Шаг 3 - Сбор логов
Если на экране нет ошибок, запустите трассировку для сбора вывода данных в файл, в примере - c:\temp\log1.log:
Windows
fbtracemgr.exe -se localhost:service_mgr -user SYSDBA -pass masterkey -start -conf C:\temp\fbtrace25.conf > c:\temp\log1.log
Linux
./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