tibemsd "out of memory" problem on AIX4.3+, but tibemsd process memory footprint is less than 1 GB

tibemsd "out of memory" problem on AIX4.3+, but tibemsd process memory footprint is less than 1 GB

book

Article ID: KB0091938

calendar_today

Updated On:

Products Versions
TIBCO Enterprise Message Service -
Not Applicable -

Description

Resolution:
Symptom:

32bits tibemsd on AIX 4.3+ run out of memory. You may notice "SEVERE ERROR: No memory to XXXXXX"

Possible Reasons:

1. "data/memory" values in the "ulimit -a" result is too low.
2. "rss" or "data" limit is set too low in /etc/security/limits file
3. MAXDATA/maxdata value is too low or not set, if it is not set, the default value is 1.
On Aix 4.3 and later, the virtual address space of a 32-bit process is divided into 16 256-megabyte areas (or segments). The operating system refers to segment 2 (virtual addresses 0x20000000-0x2FFFFFFF) as the process-private segment. By default, this segment contains the user stack and data, including the heap. The process-private segment also contains the u-block of the process, which is used by the operating system and is not readable by an application. Because a single segment is used for both user data and stack, their maximum aggregate size is slightly less than 256 MB.
It is possible to use either the large or very large address-space model with an existing program, by providing a non-zero maxdata value.

Solutions:

1. For reason 1.

Run ulimit -a

If the value for “memory” and “data” are low, set to “unlimited”, to see if the problem will disappear.
The ulimit command sets or reports user process resource limits.

2. For reason 2.

Open /etc/security/limits file to check the process memory limit:

You should check the current "rss" and "data" size in the above file to see if they are set too low.
If too low, you could change "rss" and "data" limit to -1 (unlimited) to see if that solves the problem.

Note: Setting the default limits in the /etc/security/limits file sets system wide limits, not just limits taken on by a user when that user is created.

3. For reason 3.

There are two ways to set maxdata/MAXDATA value for 32bits tibemsd

(a). LDR_CNTRL environment variable

On AIX, the number of segments that a process can use for data is controlled by the LDR_CNTRL environment variable. It is defined in the parent process of the process that is to be affected.

for example,
export LDR_CNTRL=MAXDATA=0x8000000 &ltapplication>

(b). ldedit command

The ldedit command makes it possible to mark or unmark an application as a 'large page data' program.
for example,
ldedit -bmaxdata 0x80000000 &ltapplication>

Issue/Introduction

tibemsd "out of memory" problem on AIX4.3+, but tibemsd process memory footprint is less than 1 GB