1. Reduce the shared memory on one or more database servers startup parameters.
A good starting point is to reduce the prior value of Database Buffers (-B) by 10%. Since OpenEdge 10.1B the -shmsegsize
database startup parameter can be adjusted down so enough contiguous Memory are available for the Virtual Memory Manager to provide to the server. Refer to Article P133127, What is the default -shmsegsize value used when allocating shared memory segments?
The database must be restarted for these new settings to take effect and the client connection in shared memory should be attempted immediately after the database is started to see if the reduction in shared memory and the segments used to satisfy the requirement is sufficient to avoid the 1720 error. This also increases the chances of their being enough contiguous Memory available for the Virtual Memory Manager to provide to the client. For example several clients may be able to connect, before the nth fails due to the fact that the memory pages have fragmented such that contiguous memory are not longer available when the shared memory requirements are approaching the 32-bit executable limit.
2. Connect Client-Server (-S -H) instead of shared-memory
3. Use Windows OpenEdge 64-bit license instead of 32-bit which is available since OpenEdge 10.2B.
- 32-bit clients will need to connect to the 64-bit Database Client Server
- 64-bit client processes will be able to attach to more shared memory