IBSurgeonパフォーマンス分析のためにFirebirdトレースを収集する方法
ご注意ください:トレースは安全で、本番環境で開始できます。以下の推奨構成を使用する場合、パフォーマンスに影響を与えません。
- Em Português - Como coletar Firebird Trace para IBSurgeon Performance Analysis?
- In deutscher Sprache - Wie erfasse ich Firebird-Tracees für die IBSurgeon-Leistungsanalyse?
この説明書では、バニラFirebirdのユーザー向けにIBSurgeon Performance Analysis(cc.ib-aid.comサブスクリプションの一部)の使用方法を説明します(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
#print_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の場合があります)、実行します(masterkeyの代わりに実際のSYSDBAパスワードを使用してください):
fbtracemgr.exe -se localhost:service_mgr -user SYSDBA -pass masterkey -start -conf C:\temp\fbtrace30.conf
Linux
ターミナルを開き、Firebirdのbinフォルダ(/opt/firebird/binまたは/usr/local/bin)からfbtracemgrを実行します:
./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時間)。その後、Ctrl-Cでfbtracemgrを中断します。
ステップ4. ログのアップロード
結果のログファイルをcc.ib-aid.comのTrace Visualizationにアップロードします。
ログファイルのサイズが20Mbを超える場合は、zip圧縮(標準の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を実行)、FirebirdのBinフォルダに移動し(C:\Program Files\Firebird\Firebird_2.5.inまたはC:\HQbird\Firebird25.inの場合があります)、実行します(masterkeyの代わりに実際のSYSDBAパスワードを使用してください):
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
ターミナルを開き、Firebirdのbinフォルダ(/opt/firebird/binまたは/usr/local/bin)からfbtracemgrを実行します:
./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時間)。その後、Ctrl-Cでfbtracemgrを中断します。
ステップ4. 結果のアップロード
結果のログファイルをcc.ib-aid.comのTrace Visualizationにアップロードします。
ログファイルが20Mbを超える場合は、圧縮してください(標準のWindows zip、Linux gz、または7zip)。圧縮されたログをアップロードしてください。圧縮ログのサイズは1Gbに制限されており、それより大きいログファイルは削除されます。
ログインするにはアカウントが必要です。
ログイン後、「Traces」ウィジェットの右上隅にある「Upload」をクリックします:

次に、ディスク上のトレースログファイル(最大120Mb)を選択し、「Upload」をクリックします:

アップロードには、インターネット接続のアップロード速度と一般的な接続状況に応じて1〜2分かかることがあります。圧縮ファイルはサイズが小さいため、より速くアップロードされます!
その後、アップロードしたファイルが「Processing」と表示されます:

処理には通常1〜2分かかります。処理のステータスを確認するには、「Refresh」ボタンを使用する必要があります。
処理が完了すると、パフォーマンスサマリーレポート(列「Trace summary report」、リンク「Html」)とトレースのグラフィカル表示(列とリンク「Graphs」)へのリンクが表示されます:

「Html」をクリックすると、トレースサマリーレポートを含む新しいページが表示されます。
レポートには、実行時間順(つまり、最も長いクエリ)、頻度順(最も頻繁なクエリ)、時間合計順(大部分の時間を占めたSQLクエリ)、フェッチ順(最もCPUを消費するクエリ)、読み取り順(ディスク読み取り)、書き込み順(ディスク書き込み)でソートされたトップクエリのリストが含まれています。
また、プロセスサマリーもあり、リソースの大部分を消費したアプリケーションを確認できます。

「Graphs」をクリックすると、トレースログのグラフィカル表示が表示され、毎分ごとにグループ化されたトップクエリ(クエリ実行の終了時刻による)が表示されます。
特定の時刻をクリックすると、トレースログからのトップクエリ、そのプラン、パラメータ、統計情報が表示されます:

次のステップ
ログ分析の例はこちら:/articles/example-of-performance-analysis