Kbase P36312: Error (748) occurs even when -n is set higher than the number of simultaneous connections.
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  15/10/2008 |
|
Status: Verified
FACT(s) (Environment):
UNIX
SYMPTOM(s):
Error (748) occurs even when -n is set higher than the number of simultaneous connections.
When connecting to multiple databases and you get error (748).
Many databases are started on the machine and it's causing error (748).
The server or the system has no more resources. Try a larger -n. (748)
CAUSE:
They system ran out of available semaphores.
Every time a Progress database is started it will try to pre-allocate enough semaphores to accommodate the -n value. The higher the -n value more semaphores are pre-allocated.
What will happen if the operating system semaphore kernel limit is less than what you are trying to allocate, is that the database will automatically scale down the -n value and will use what it can get.
The formula for calculating the semaphores used for a database is:
(Max-local-users-on-any-database + Max-#servers-on-any-database + 4).
For example: Each 'default' database would use 29 semaphores. Therefore, if the kernel had a 100 semaphores available (system wide) and you tried to start 4 databases then this is what would happen:
Database 1 has 21 users (using 29 semaphores)
Database 2 has 21 users (using 29 semaphores)
Database 3 has 21 users (using 29 semaphores)
Database 4 has 5 users (using 13 semaphores)
FIX:
Review the UNIX kernel semaphore settings on your machine and ensure that they accommodate all processes that are running simultaneously.
The Progress Installation Guide contains a table that provides calculation methods for the required UNIX kernel semaphore settings. Note that this is only calculating what 'Progress' requires and doesn't include what other non-Progress software needs.