Running FirebirdCS-2.1.1.17910-0.amd64 under Linux Fedora core 9 version 2.6.27.15-78.2.23.fc9.x86_64
When thedatabase is under a high load (i.e. over 100 connections) where each connection is doing queries and updates, then merely executing select count(*) from mon$attachments causes several of the connections to die. Client apps report error reading data from the connection.
Sorted the problem by upping both the kernel semaphore settings and the firebird.conf setting:
respectively:
kernel.sem="1024 64000 1024 512"
and
LockSemCount= 512
This allows 300 concurrent connections to exist, and for the MON$ queries to succeed.
Note :
The Kernel can be configured dynamically. Check the current settings with:
# cat/proc/sys/kernel/sem 250 32000 32 128
To increase the values put something like this in /etc/sysctl.conf:
# SEMMSL SEMMNS SEMOPM SEMMNI kernel.sem =1024 32000 256 1024
To apply the settings reboot or call sysctl -p. Then check the new settings:
# cat/proc/sys/kernel/sem 1024 32000 256 1024