FreeBSD + FireBird 1.5 - проблема подключения

Администирование клиентской и серверной части InterBase, Firebird, Yaffil. Настройка файла конфигурации и т.п.

Модераторы: kdv, Alexey Kovyazin

Ответить
drurus
Сообщения: 6
Зарегистрирован: 08 авг 2008, 11:32

FreeBSD + FireBird 1.5 - проблема подключения

Сообщение drurus » 11 авг 2008, 17:43

Доброе всем время суток!

Предыстория - есть FB 1,5 SS, работает под виндой. Спец программа, для которой разработчиками написана udf и без которой программа не работает, также под виндой.

В силу различных обстоятельств принято решение запустить базу не в Linux, а во FreeBSD. Сказано - сделано. Далее возникает проблема - udf собрана в линуксе и FB под FreeBSD её не подхватывает - программа отказывается работать :( Разработчики отказываются собирать udf нативно.

Но т.к. FreeBSD может выполнять линуксовые приложения - установлена и запущена линуксовая версия FirebirdCS-1.5.5.4926. Udf подхватилась и база заработала.

Далее возникает проблема - база обслуживает только одно сетевое подключение, вторая копия спец.программы висит до тех пор, пока не завершится первая. Путем различных танцев с бубном база начала принимать сетевые подключения, если запустить ее с параметром -m. В итоге работает 1 процесс и при нагрузке перекидывает процесс по ядрам процессора и с базой практически невозможно работать. Такое впечатление, что работает СуперСервер.

Изначально настройки запуска были стандартными:

Код: Выделить всё

# grep gds /etc/services
gds_db          3050/tcp   #InterBase Database Remote Protocol
gds_db          3050/udp   #InterBase Database Remote Protocol

Код: Выделить всё

grep fb_ /etc/inetd.conf
gds_db  stream  tcp     nowait  firebird        /compat/linux/opt/firebird/bin/fb_inet_server  fb_inet_server
и при таком варианте как раз работало только одно подключение.
В данный момент запуск происходит с параметром:
/compat/linux/opt/firebird/bin/fb_inet_server -m

Также запускал скрипт changeGdsLibraryCompatibleLink.sh и устанавливал значение client (которое делает симлинк /usr/lib/libgds.so -> /opt/firebird/lib/libfbclient.so)
Я уже не знаю в какую сторону копать и как запустить в нормальном режиме CS.
PS для теста, эту сборку FB CS 1.5 поставил в vmware на CentOS...работает.
Очень прошу помощи!

drurus
Сообщения: 6
Зарегистрирован: 08 авг 2008, 11:32

Сообщение drurus » 11 авг 2008, 18:33

Еще вопрос: где посмотреть какие ключи можно использовать и их описание?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 12 авг 2008, 16:17

база начала принимать сетевые подключения, если запустить ее с параметром -m
че-то я впервые слышу про такой параметр.

И вообще, мутите вы. Оригинальная разработка под виндами или линуксом, а вы ее под фрю, и т.д. Никто совместимости чужих приложений или юдф-ов не обещал.

drurus
Сообщения: 6
Зарегистрирован: 08 авг 2008, 11:32

Сообщение drurus » 12 авг 2008, 17:34

с параметром -m сервер начинает прослушивать порт (параметр подбирал опытным путем)

Код: Выделить всё

# sockstat | grep 3050
root     fb_inet_se 1609  0  tcp4   *:3050                *:*
Очень жаль что только под лин и вынь... :( FreeBSD достаточно популярная серверная ОС.

Не исключаю что и сам compat не доработан, но основная его цель - линуксовые приложения работают в "родной среде". Работает много чего и довольно хорошо и беспроблемно.

!!! Будут ли работать UDF-ки во 2-й версии взятые из первой? Речь о самописных.

Если кто-либо сталкивался с подобными задачами - отпишитесь.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 13 авг 2008, 14:29

Очень жаль что только под лин и вынь... Sad FreeBSD достаточно популярная серверная ОС.
не понял. Это вы разработчикам udf и программы скажите.
кстати, Фря если и популярна, то не как ОС в качестве сервера БД.

drurus
Сообщения: 6
Зарегистрирован: 08 авг 2008, 11:32

Re: FreeBSD + FireBird 1.5 - проблема подключения

Сообщение drurus » 28 окт 2008, 15:00

РЕШЕНО
поставлен Firebird 1.5.5 из портов (те нативный), установлена UDF собранная для linux-а, программа работает с базой, база подхватывает UDF.
проблема была в том, что тк udf-ка линуксовая, то и либы ей нужны линуксовые, которые она ессно не находила. в режиме совместимости (линуксовая рпм-ка поставленная в compat) работало, но только одно подключение к базе.
библиотеки были выявлены с помошью трейса пида процесса, далее сделаны соответстующие симлинки.
как делал:
запустил виндовое приложение, которе подключилось к базе.
смотрим пид процесса:

Код: Выделить всё

ps ax | grep fb
38765  ??  I      0:00,00 /usr/local/sbin/fb_lock_mgr
39250 ??  Ss     0:00,03 fb_inet_server
включаем трассировку:

Код: Выделить всё

ktrace -p 39250
вызываем ошибку в программе. в моем случае не открывались счета, с сообщением что они редактируются.
останавливаем трассировку:

Код: Выделить всё

ktrace -cp 39250
декодируем полученный файл. дефолтом это ktrace.out:

Код: Выделить всё

kdump > out
и смотрим файл out на предмет различных ошибок. в моем случае выглядело так:

Код: Выделить всё

 39250 fb_inet_server CALL  access(0x28079000,F_OK)
 39250 fb_inet_server NAMI  "/lib/libm.so.6"
 39250 fb_inet_server RET   access -1 errno 2 No such file or directory
процесс делал несколько попыток открыть файл по разным путям:

Код: Выделить всё

 38792 fb_inet_server NAMI  "/lib/libm.so.6"
 38792 fb_inet_server NAMI  "/usr/lib/libm.so.6"
 38792 fb_inet_server NAMI  "/usr/lib/compat/libm.so.6"
 38792 fb_inet_server NAMI  "/usr/local/lib/libm.so.6"
 38792 fb_inet_server NAMI  "/usr/local/lib/compat/pkg/libm.so.6"
 38792 fb_inet_server NAMI  "/usr/local/lib/compat/libm.so.6"
 38792 fb_inet_server NAMI  "/usr/local/lib/dovecot/libm.so.6"
 38792 fb_inet_server NAMI  "/usr/local/lib/dovecot/imap/libm.so.6"
 38792 fb_inet_server NAMI  "/usr/local/lib/dovecot/lda/libm.so.6"
 38792 fb_inet_server NAMI  "/usr/local/lib/dovecot/pop3/libm.so.6"
 38792 fb_inet_server NAMI  "/usr/local/lib/gcc/i386-portbld-freebsd7.1/3.4.6/libm.so.6"
 38792 fb_inet_server NAMI  "/usr/local/lib/mysql/libm.so.6"
 38792 fb_inet_server NAMI  "/usr/local/lib/wine/libm.so.6"
 38792 fb_inet_server NAMI  "/usr/local/libexec/openldap/libm.so.6"
 38792 fb_inet_server NAMI  "/lib/libm.so.6"
 38792 fb_inet_server NAMI  "/usr/lib/libm.so.6"
мне нужны были всего 3 библиотеки (libm.so.6, ld-linux.so.2, libc.so.6), но чтобы не мучаться сделал симлинк на весь каталог:

Код: Выделить всё

mv /usr/lib/compat /usr/lib/compat.bak
ln -s /usr/compat/linux/lib /usr/lib/compat
итог: ПО и база великолепно работают. буду сносить CentOS и запускать базу во FreeBSD.
зы. на линуксе база отлично проработала 2 месяца.

Ответить