Kbase P25628: When is shared memory addressed?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  07/07/2009 |
|
Status: Verified
GOAL:
When is shared memory addressed ?
GOAL:
After increasing -B why does the server crash some time after startup and not at startup?
FACT(s) (Environment):
All Supported Operating Systems
Progress/OpenEdge Product Family
FIX:
The -B x blocksize = shared memory addressed by the Progress database manager, at server startup (proserve) **
The database logfile will record:
"created shared memory with segment_id <long integer> (9336)
This is the memory that is addressed by the database buffers, if it were more than the memory available on the machine (RAM), then yes, the database would have crashed at startup.
Clients then start to connect, every _mprosrv needs memory which it takes from the amount of memory REMAINING on the server, and depending on the connection, some of the buffer memory. In this case, after 2 hours of running another process (which could have been a Progress OR non-progress process starting on the server, needed memory and there wasn't enough to allocate.
This is a simplified explaination, there are also factors such as swap space and OS limits for example that come into play.
** This is a rough calculation. For the exact amount of shared-memory addressed by the database broker examine the shared memory segments assigned through:
$ promon dbname
R&D > 1. Status Displays > 13. Shared Resources
example:
Shared memory allocated: 101289K (1 segments. The last segment was not locked in memory)
or R&D > 1. Status Displays > 14. Shared Memory Segments
example:
Seg Id Size Used Free
1 19267584 103720206 94318064 9402142