Kbase 15312: Progress Error 1175 and SHMMAX and SHMSEG Settings
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/16/2008 |
|
Status: Verified
FACT(s) (Environment):
Unix
SYMPTOM(s):
Starting several databases
Database will not start
Most of the databases will start
The last database or last few databases will not start
Maximum number of shared-memory segments per process exceeded. (1175)
CAUSE:
Either you are connecting to too many databases or the maximum shared memory segment size (SHMMAX) is too small and the required amount of shared memory uses many small segments.
Progress uses shared memory for such things as buffers (-B, -bibufs, -aibufs), Lock Table Entries (-L), the user table (-n) and more.
The amount of shared memory available to Progress (and any other applications that require it) is based on two kernel parameters:
SHMMAX - the maximum size of a single shared memory segment
SHMSEG - the total number of shared memory segments.
If Progress requires more than these parameters allow, the client will receive a Progress error such as error (1175).
FIX:
If the kernel runs out of shared memory, the first corrective action is to increase the SHMMAX parameter. Most systems will allow this to be increased between 16,777,216 (16MB) and 134,217,728 (128MB). Earlier versions of SCO were an exception with a maximum of 4,194,304 (4MB).
Prior to 9.0B the maximum shared memory segment size (SHMMAX) we used in the Progress RDBMS was 16,777,216 (16MB) for most UNIX Operating Systems. The exception to this was NT, AIX, Sequent PTX and DG-UX where it was 134,217,728 (128MB).
In 9.0B and later, these values have changed. We have increased the shared memory segment size (SHMMAX) we use in Progress to be 134,217,728 (128MB) for Progress 32-bit ports and 1,073,741,824 (1GB) for our 64-bit ports.
When increasing the size of a segment is no longer possible, or when the requirement is for smaller segments but more of them, SHMSEG will need to be increased accordingly.
On IBM AIX systems, this is a non-tunable kernel parameter fixed at 10, which implies that a maximum of 10 database servers may be connected to a single Progress client process.
Progress's SHMSEG requirement can be determined by first starting a server for each database to which a client will require connection, and then performing a proutil -C dbipcs. This will show the individual shared memory segments required by each database server. Now consider the worst case total to which a client may need to connect and add 10%. This will give you the SHMSEG value most likely to avoid 1175 errors.