DB2 - Problem description
Problem IC72058 | Status: Closed |
IN DPF SYSTEM, LOAD FROM CURSOR WITH LOBS LARGER THAN 32KB COULD CAUSE A MEMORY LEAK. | |
product: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
Problem description: | |
In DPF system, LOAD from CURSOR with LOBs larger than 32KB could cause memory leak such as PoolID PoolName TotalSize(Bytes) %Bytes TotalCount %Count LOC File 5 utilh 592 52.86 4 4.76 968 sqlrkrpc.C (in v97 it would be from the application heap instead of util heap, such as PoolID PoolName TotalSize(Bytes) %Bytes TotalCount %Count LOC File 1 apph 1480 0.36 10 0.86 1077 sqlrkrpc.C To detect the leak monitor a database partition other that the coord partition. | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * All DB2 V9.1 and later versions performing a LOAD from * * cursor in a DPF environment. * **************************************************************** * PROBLEM DESCRIPTION: * * In a DPF system running DB2 V9.1, 9.5 or 9.7 a LOAD from * * CURSOR with LOBs larger that 32KB could cause * * a memory leak in the utility heap (in V9.1) or application * * heap (in 9.5 or 9.7) leading to increased memory usage on * * the server. * * * * Secondary symptoms include: * * - LOAD may fail with error SQL0973, out of utility heap. * * - Degraded load/backup performance on v9.1 since load/backup * * are basing resource usage on remaining utility heap. * * - Increased system memory usage over time. * * - Potential out-of-memory failures if any enforced limits * * are reached. * * * * Depending on the DATABASE_MEMORY configuration setting, if * * set to a fixed value, you may see the following message in * * the db2diag.log file indicating out of memory errors for * * utility heap. * * * * 2010-08-09-20.11.52.089542-300 E366984A702 LEVEL: * * Warning * * PID : 570528 TID : 1 PROC : * * db2lfrm0 1 * * INSTANCE: db2inst1 NODE : 001 DB : SAMPLE * * APPHDL : 0-912 APPID: * * 12.34.56.789.1234.100810000320 * * AUTHID : USER1 * * FUNCTION: DB2 UDB, SQO Memory Management, * * sqloMemLogPoolConditions, probe:30 * * DATA #1 : <preformatted> * * Out of memory failure for Backup/Restore/Util Heap * * (UTIL_HEAP_SZ) on node 1. * * Requested block size : 34500 bytes. * * Physical heap size : 551616512 bytes. * * Configured heap size : 409600000 bytes. * * Unreserved memory used by heap : 142016512 bytes. * * Unreserved memory left in set : 0 bytes. * * * * The db2pd command can be used to identify the memory leak, * * for example after the load from cursor is complete use the * * db2pd command on a non-coordinator database partition : * * * * db2pd -dbp partition# -db <db_name> -memb 5 |grep 896367698 * * * * which should return output similar to * * * * Address PoolID PoolName BlkAge * * Size(Bytes) I LOC File * * 0x07800003166E0068 5 utilh 55174 42943 * * 1 968 896367698 * * * * The hash ID 896367698 identifies the specific DB2 source * * file. * * * * Or you can monitor memory usage in the utility heap and * * observe an increasing pattern after the execution of each * * LOAD, for example: * * * * db2pd -dbp partition# -db <db_name> -memp |egrep * * "Address|utilh" * * Address MemSet PoolName Id Overhead LogSz * * LogUpBnd LogHWM PhySz PhyUpBnd PhyHWM * * Bnd BlkCnt CfgParm * * 0x07800002200012E0 SAMPLE utilh 5 0 352 * * 20512768 352 65536 20512768 65536 * * Ovf 2 UTIL_HEAP_SZ * * * * after the LOAD is complete issue again the same command * * * * db2pd -dbp partition# -db <db_name> -memp |egrep * * "Address|utilh" * * Address MemSet PoolName Id Overhead LogSz * * LogUpBnd LogHWM PhySz PhyUpBnd PhyHWM * * Bnd BlkCnt CfgParm * * 0x07800002200012E0 SAMPLE utilh 5 0 648 * * 20512768 6039059 65536 20512768 9568256 * * Ovf 4 UTIL_HEAP_SZ * * * * You should observe increasing values in at least LogSz, * * LogHWM and BlkCnt. * * * * Note that in DB2 9.5 and 9.7 the memory leak would be from * * the application heap instead of utility * * heap: * * * * db2pd -dbp partition# -db <db_name> -memb appctl |grep * * 896367698 * * * * which should return output similar to * * * * Address PoolID PoolName BlkAge Size(Bytes) * * I LOC File * * 0x0700000010022208 1 apph 75 148 * * 1 1025 896367698 * * * * Or you can monitor increasing memory usage in apph using the * * -memp option like : * * * * db2pd -dbp partition# -db <db_name> -memp |egrep * * "Address|apph" * * Address MemSet PoolName Id Overhead LogSz * * LogUpBnd LogHWM PhySz PhyUpBnd PhyHWM * * Bnd BlkCnt CfgParm * * 0x0700000010000868 AppCtl apph 1 0 6682 * * 524288 6682 65536 524288 65536 * * Phy 10 APPLHEAPSZ * * 0x0700000010000720 AppCtl apph 1 0 10488 * * 524288 11224 65536 524288 65536 * * Phy 16 APPLHEAPSZ * * 0x0700000010000490 AppCtl apph 1 0 13576 * * 524288 85522 131072 524288 262144 * * Phy 32 APPLHEAPSZ * * * * and after a load is complete execute the same command: * * * * db2pd -dbp partition# -db <db_name> -memp |egrep * * "Address|apph" * * Address MemSet PoolName Id Overhead LogSz * * LogUpBnd LogHWM PhySz PhyUpBnd PhyHWM * * Bnd BlkCnt CfgParm * * 0x0700000010000868 AppCtl apph 1 0 6682 * * 524288 6682 65536 524288 65536 * * Phy 10 APPLHEAPSZ * * 0x0700000010000720 AppCtl apph 1 0 10488 * * 524288 11224 65536 524288 65536 * * Phy 16 APPLHEAPSZ * * 0x0700000010000490 AppCtl apph 1 0 13872 * * 524288 86286 131072 524288 262144 * * Phy 34 APPLHEAPSZ * * * * Monitor LogSz, LogHWM, and BlkCnt which should all increase * * after each LOAD execution. * **************************************************************** * RECOMMENDATION: * * Upgrade to DB2 Version 9.7 Fix Pack 4. * **************************************************************** | |
Local Fix: | |
To work around the problem do not load from cursor. Load from a file for example does not exhibit the same behavior. | |
available fix packs: | |
DB2 Version 9.7 Fix Pack 4 for Linux, UNIX, and Windows | |
Solution | |
The fix in included in DB2 Version 9.7 Fix Pack 4. | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 20.10.2010 19.04.2011 19.04.2011 |
Problem solved at the following versions (IBM BugInfos) | |
9.7.FP4 | |
Problem solved according to the fixlist(s) of the following version(s) | |
9.7.0.4 |