Kbase 20852: What are the possible causes for error 1176
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  11/20/2009 |
|
Status: Verified
GOAL:
What are the possible causes for error 1176
GOAL:
The data space of the process is not enough for the shm segment (1176)
FACT(s) (Environment):
UNIX
Progress 9.x
OpenEdge 10.x
CAUSE:
Error 1176 could happen when the total amount of shared memory a process is attempting to attach to exceeds the OS-allowed limit for a 32-bit process. For example:
db1 - 500 MB shared memory
db2 - 1GB shared memory
db3 - 500 MB shared memory
A self-service client is able to attach to any two databases at the same time, but fails when it attempts to attach to the third, because the OS limits a single process to around 1.6GB of shared memory.
This fails even though all the individual database servers are just fine.
This problem can happen on any machine where the OS supports more than 4GB of real memory. That includes all platforms running 64-bit hardware and the newer Intel hardware that supports 36-bit memory space (Pentium Pro and later), providing the OS is using that ability.
IBM, HP, Sun, DG and a few other Intel UNIX flavors share this problem.
Error 1176 can also occur when there isn't an unused chunk of address space large enough to attach the segment. As the OS attaches segments, it picks the virtual address where it wants to attach the segments to.
If you attach (say) 10 segments, they might be ordered one after the other. Then, when you disconnect a database, some of the segments are removed. This leaves unused chunks of address space, or gaps. As a result, your address space gets fragmented.
The total of the gaps might be bigger than what you need for a new segment, but each individual gap is too small to fit it in. For example, if you want to attach a 16mb segment but you only have non-contiguous 8mb unused chunks.
FIX:
In this case, fine tune the database parameters to make all databases use full-size shared memory segments, for example, the number SHMMAX is set to.
Promon R&D 1->14 will list each shared memory segment size.
On IBM AIX, the shared-memory related parameters are hard-coded in the AIX kernel. Please see Solution P20901 for a possible workaround.
Finally, the limit that causes error 1176 has been increased from 2Gb to 116Gb for 64-bit OpenEdge products, so you are if you are running a 32-bit version of OpenEdge on top of a 64-bit operating system, please check in the Product & Product Availability Guide whether your operating system is supported with a native, 64-bit port of Progress and OpenEdge; if that is the case, please consider migrating to the 64-bit version of OpenEdge.