Troubleshooting
Problem
Db2 V11.1m4fp4 または V11.5fp0 の Windows 版で、データベース・マネージャー (db2syscs.exe) を起動していると PRIVATE メモリーがリークすることがあります。
リークの結果として以下のような症状が報告されています。
- DATABASE_MEMORY へメモリーを割り振れないために、アプリケーションのパフォーマンスが悪化する
- データベースの活動化がメモリー不足で失敗する
- データベースの接続がメモリー不足で失敗したり待たされることがある
- SQL の実行で SQL0973N、SQL0101N、SQL0954N など様々なメモリー不足のエラーが返る
Symptom
db2pd -dbptnmem コマンドの出力結果を観察すると、PRIVATE セットの増加傾向が観察されます。
ここで、db2pd -memblock private sort を実行すると、以下の LOC および FILE のメモリー・ブロックが PRIVATE セットのほとんどのメモリーを占めていることが観察できます。
All memory consumers in Private memory set:
PoolAddr PoolID PoolName SecondID TotalSize(Bytes) %Bytes TotalCount %Count LOC File
0x000001504C280498 86 persist 0 7663597408 99.87 216388 99.43 476 4284367586
注:db2pd -memblock コマンドの多用はシステム負荷がかかるだけでなく別のメモリー・リークを起こす可能性があります。
Cause
Db2 v11.1m4fp4 に含まれるコード変更により、EDU (db2syscs.exe 内のスレッド) クリーンナップで少量のメモリー・ブロックを解放していませんでした。このため、特にデータベースを非活動化する都度リークが発生します。
Environment
Db2 V11.1m4fp4 または V11.5fp0 の Windows 版
Resolving The Problem
この問題は以下の APAR として報告され、それぞれ v11.1m4fp5 と v11.5m4fp0 で修正されています。
問題が修正されたフィックスパックを適用してください。
各フィックスパックは以下のリンクからダウンロード可能です。
フィックスパックをすぐに適用できない場合、データベースを明示的に活動化 (activate) してリークの発生を緩和する運用もご検討ください。
例
- 管理者としてデータベース・サーバーにログオンし、「DB2 コマンド ウィンドウ - 管理者」を起動します。
- 以下のコマンドを実行します。(使用する各データベースに対して実行します)
db2 activate db <データベース名>
なお、このコマンドは Db2 再起動の都度実行する必要があります。また、データベースの活動化でリークは緩和できますが、LOAD や BACKUP DATABASE の実行、NUM_POOLAGENTS を超えるエージェントの生成と除去などでリークは発生します。完全な解決策はフィックスパックの適用のみである点に注意してください。
Document Location
Worldwide
[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m0z000000GozAAAS","label":"Memory"}],"ARM Case Number":"","Platform":[{"code":"PF033","label":"Windows"}],"Version":"11.1.0;11.5.0","Line of Business":{"code":"LOB10","label":"Data and AI"}}]
Was this topic helpful?
Document Information
Modified date:
15 August 2023
UID
ibm16254141