IBM Support

[Db2] 11.5.6: 組み込み SQL アプリケーション・プロセスでメモリー・リークが発生する

Troubleshooting


Problem

Db2 11.5.6 で、組み込み SQL (Embedded SQL: ESQL) を実行するアプリケーション・プロセスのメモリーがリークすることがあります。リークの結果、以下のような問題の発生が報告されています。
  • アプリケーションが追加のメモリーを割り当てできずエラーを返す
  • アプリケーションを含むシステムのパフォーマンスが低下する
  • アプリケーションが動作するインスタンスの db2diag.log にメモリー・エラーが大量に記録される
  • システムのスワップ・スペースの使用量が増大する

Cause

Db2 11.5.6 では、組み込み SQL アプリケーションが SSL/TLS の接続処理で使用する小さなメモリーを解放しない障害があります。このメモリーは SSL/TLS の使用有無にかかわらず割り当てられるため、暗号化を利用しないアプリケーションでも接続処理の都度メモリーがリークします。
この問題は APAR IT37963 として報告され、11.5.7 で修正されています。

Environment

Db2 11.5.6 で組み込み SQL を実行するアプリケーション・プロセス

Diagnosing The Problem

メモリー・リークのために ulimit (d) に抵触するなど、アプリケーションが追加のメモリーを割り当てられない場合、db2diag.log に以下のようなエントリーが記録されます。
2021-12-12-10.05.07.551955+540 I1989A663            LEVEL: Error (OS)
PID     : 7340242              TID : 12957          PROC : myapp
INSTANCE: db2inst1             NODE : 000           DB   : SAMPLE
APPHDL  : 0-12246              APPID: 192.168.0.10.8696.220412010507
AUTHID  : DB2INST1             HOSTNAME: db2client.example.com
EDUID   : 1
FUNCTION: DB2 UDB, SQO Memory Management, sqloLogMemoryCondition, probe:100
CALLED  : OS, -, malloc
OSERR   : ENOMEM (12) "現在使用可能なメモリーが不足しています。"
MESSAGE : Private memory and/or virtual address space exhausted, or data ulimit
          exceeded
注:db2diag.log への出力が止まり、sqloLogMemoryCondition の記録が syslog へ出力されることもあります。
また、メモリー・リークが発生しているアプリケーション・プロセスに対して db2pd -memblock を実行すると、ソース・ファイル名 sqlccssl.C、行番号 3151 でのメモリー割り当てが増加していることが確認できます。
$ db2pd -memblock pid=<アプリケーションのプロセスID> sort

Memory blocks sorted by size:
PoolID PoolName TotalSize(Bytes) TotalCount LOC  File
0                     503363319     9869869 3151 sqlccssl.C
0                         32800           1 4665 sqleu_client.C

Resolving The Problem

この問題の回避策はありません。アプリケーションが動作する Db2 に対して、問題が修正されている 11.5.7 以降を適用してください。11.5.7 は以下のページからダウンロード可能です。
 
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

Document Location

Worldwide

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"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":"PF025","label":"Platform Independent"}],"Version":"11.5.6"}]

Document Information

Modified date:
15 August 2023

UID

ibm16571519