|
|
|
Firebird on Linux: connection refused
|
|||
|---|---|---|---|
|
#18+
FirebirdCS version 1.5.0.4290 on SMP Linux. Apache+PHP с поддержкой интербейз. Есть тестовый php-скрипт, который в параллельном режиме запускается с помощью программы ab. Проблема: после достижения 25 коннектов к БД дальнейшие отваливаются с сообщением " Failed to establish a connection. Connection refused in testscript.php". Подскажите, в чем причина и как это устранить. Заранее благодарен ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2004, 18:46 |
|
||
|
Firebird on Linux: connection refused
|
|||
|---|---|---|---|
|
#18+
Посмотри в логах сообщение об ошибке и код ошибки. Потом по коду посмотри описание ошибки в исходниках линуха. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 12:53 |
|
||
|
Firebird on Linux: connection refused
|
|||
|---|---|---|---|
|
#18+
Спасибо, с этим не без помощи добрых людей разобрался. Я не учел, что сервер запускается из-под 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)" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 13:07 |
|
||
|
Firebird on Linux: connection refused
|
|||
|---|---|---|---|
|
#18+
В линухе подкрути ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 13:16 |
|
||
|
Firebird on Linux: connection refused
|
|||
|---|---|---|---|
|
#18+
2 Мимопроходящий: bash-2.05b$ cat /proc/sys/kernel/sem 250 32000 100 128 100 семафоров хватало раньше всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 13:29 |
|
||
|
Firebird on Linux: connection refused
|
|||
|---|---|---|---|
|
#18+
Сюда смотри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 13:32 |
|
||
|
Firebird on Linux: connection refused
|
|||
|---|---|---|---|
|
#18+
Мда, семафоры - это капец. Я с ними на 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 14:04 |
|
||
|
Firebird on Linux: connection refused
|
|||
|---|---|---|---|
|
#18+
Количество семафоров удалось поднять до 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)" Вот такие вот грустные мысли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 16:06 |
|
||
|
|

start [/forum/topic.php?fid=40&tid=1578863]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 493ms |

| 0 / 0 |
