powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird on Linux: connection refused
8 сообщений из 8, страница 1 из 1
Firebird on Linux: connection refused
    #32469642
FirebirdCS version 1.5.0.4290 on SMP Linux.
Apache+PHP с поддержкой интербейз.
Есть тестовый php-скрипт, который в параллельном режиме запускается с помощью программы ab.
Проблема: после достижения 25 коннектов к БД дальнейшие отваливаются с сообщением " Failed to establish a connection. Connection refused in testscript.php".
Подскажите, в чем причина и как это устранить.
Заранее благодарен ;)
...
Рейтинг: 0 / 0
Firebird on Linux: connection refused
    #32475326
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри в логах сообщение об ошибке и код ошибки. Потом по коду посмотри описание ошибки в исходниках линуха.
...
Рейтинг: 0 / 0
Firebird on Linux: connection refused
    #32475353
Заглянул
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, с этим не без помощи добрых людей разобрался. Я не учел, что сервер запускается из-под xinetd. После увеличения cps настройках xinetd работает.
Теперь другая проблема, в firebird.log постоянные сообщения:
"Fatal lock manager error: semaphores are exhausted"
Если в firebird.conf увеличить количество семафоров, то сообщение другое:
"Number of requested semaphores (64) is greater then size of the existing semaphore set (32)"
...
Рейтинг: 0 / 0
Firebird on Linux: connection refused
    #32475373
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В линухе подкрути
...
Рейтинг: 0 / 0
Firebird on Linux: connection refused
    #32475395
Заглянул
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Мимопроходящий:

bash-2.05b$ cat /proc/sys/kernel/sem
250 32000 100 128

100 семафоров хватало раньше всем.
...
Рейтинг: 0 / 0
Firebird on Linux: connection refused
    #32475402
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сюда смотри.
...
Рейтинг: 0 / 0
Firebird on Linux: connection refused
    #32475482
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда, семафоры - это капец. Я с ними на FreeBSD воюю уже который месяц - так и не понял в чём причина. Только у меня проблемы под FreeBSD, а под линухами люди говорили что проблем нету...
Прикол в том что у меня появляется какой-то семафор-зомби, который берёться непонятно откудова и он всегда один почему-то. Вот что мне ответил человек, отвечающий за портирование:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
>I've been installed FireBird 1.5 from ports and now I have 
>> some problems with it:
>> 
>> 1) I did not found file gds_relay in firebird/bin directory 
>> (this file should exists there).
>> 

If it's not there, then it has been removed from the build process.
Some other developer must have removed it from the build. I
only make sure it compiles and works on FreeBSD.


>>  2 ) Maby it's firebird code problem, but i asked many people 
>> about this problem and nobody helped me :-/ We use FreeBSD 
>> 4.8. There are 100 semaphores in our system. Semaphores used 
>> only by firebird. After installing firebird I killed old 
>> semaphores and started firebird. Then i saw such data:
>> 
>>  > ipcs -b
>> Semaphores:
>> T     ID     KEY        MODE       OWNER    GROUP NSEMS
>> s 458752  251937988 --rw-rw-rw-    httpd    httpd     32
>> 
>> In a few hours I saw anothe data like this:
>>  > ipcs -b
>> Semaphores:
>> T     ID     KEY        MODE               OWNER    GROUP  NSEMS
>> s 458752  251937988 --rw-rw-rw-    httpd          httpd        32
>> s 458752  251937988 --rw-rw-rw-    firebird       firebird     1
>> 
>> After that i saw in firebird.log errors like this:
>> 
>> Fatal lock manager error: semaphores are exhausted, errno: 1
>> 
>> When I killed second semaphore, it appeared letter again and 
>> again (after few hours).
>> 
>> All files in firebird/bin directory belongs to firebird user 
>> and group. 
>> I made all exactly as in RELNOTES and TROUBLESHOOTING files written.
>> 
>> We works with firebird remotely and localy (queries from PHP).
>> 
>> Do you have any ideas what is the problem here?
>>

httpd is using semaphores. I don't know why. Maybe you have either
the scoreboard or SSL session cache using shared memory. Or you have
PHP using semaphores.
It might be a good idea to recompile your kernel and set SEMMNS to
a nice high value, like  480 . This should fix the problem.
...
Рейтинг: 0 / 0
Firebird on Linux: connection refused
    #32475826
Заглянул
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Количество семафоров удалось поднять до 64 и избавиться от ошибок в логе, тем не менее, тестирование на большом количестве параллельно работающих пользователей убедительно демонстрирует "Connection refused".
Видимо, надо еще подправить некоторые параметры в ядре, как описано здесь .

В частности, следующие рекомендации:
Константин Кузнецов
В файле /usr/src/linux/include/linux/socket.h установить параметр SOMAXCONN = как минимум количеству пользователей.
/usr/src/include/linux/tasks.h - установить количество задач NR_TASKS как минимум вдвое большим количеству пользователей.
Убедиться в наличии в ядре опции SYSVIPC.
За одно я, как правило, увеличиваю число одновременно открытых файлов параметры NR_OPEN, OPEN_MAX, __FD_SETSIZE, до где-то 8192.
Обязательно проверьте параметры семафоров, особенно если у Вас на сервере планируется выполнять что-нибудь еще, кроме InterBase. Параметры SEMMNI – 512, SEMMSL – 256, SEMOPM 100 в файле sem.h

Параметры семафоров были изменены мной на указанные в статье.
К сожалению, долго возиться нет времени.

Еще несколько замечаний. В Линуксе есть ограничение на количество открытых файловых дескрипторов на процесс (параметр NR_OPEN). И если ограничение на количество открытых файлов в системе (параметр OPEN_MAX) можно изменить, сделав просто
echo 104851 >/proc/sys/fs/file-max
то для изменения NR_OPEN нужно сделать следующее:

. . . However, there is still a per process limit of open files, which unfortunately can't be changed that easily. It is set to 1024 by default. To change this you have to edit the files limits.h and fs.h in the directory /usr/src/linux/include/linux. Change the definition of NR_OPEN and recompile the kernel.

И еще этот параметр магическим образом связан с FD_SETSIZE, по-видимому.
Для ядер 2.2.ХХ и выше параметр NR_OPEN по умолчанию равен 1024.
В случае превышения каким-либо процессом этого значения появляется такая ошибка:
"socket: Too many open files (24)"


Вот такие вот грустные мысли.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird on Linux: connection refused
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]