Подключение к FB через TCP/IP (inet, inet4, inet6)

Привет всем.

Сегодня, созерцая время выполнения тестов новой сборки (21500) c Firebird 2.5 немного опух — через fbclient.dll тесты отрабатывали в 5 раз быстрее чем через встроенный клиент. Подключение к серверу осуществляется через TCP/IP: localhost:d:\database\ibp_test_fb25_d3.gdb.

Результаты для fbclient.dll:

------------------------------------------- [SUMMARY INFORMATION]
[TESTS]
EXECUTED      : 17407
SUCCEEDED     : 17406
FAILED        : 0
WITH WARNINGS : 1 [ 1 warning(s) ]

- - - - - - - - - - - - - - - - - - - - - -
TEST TIMES]
REAL          : 4759506647    [00:07:55.9506647]
USER          : 1640038513    [00:02:44.0038513]
KERNEL        : 299209918     [00:00:29.9209918]
TOTAL         : 1939248431    [00:03:13.9248431]

Результаты для встроенного клиента:

------------------------------------------- [SUMMARY INFORMATION]
[TESTS]
EXECUTED      : 17407
SUCCEEDED     : 17406
FAILED        : 0
WITH WARNINGS : 1 [ 1 warning(s) ]

- - - - - - - - - - - - - - - - - - - - - -
[TEST TIMES]
REAL          : 25232635350   [00:42:03.2635350]
USER          : 1359080712    [00:02:15.9080712]
KERNEL        : 267229713     [00:00:26.7229713]
TOTAL         : 1626310425    [00:02:42.6310425]

Ну, думаю, приплыли. Раньше же такого не было.

После разбора полета обнаружилось, что встроенный клиент сначала пытается подключаться к серверу (FB2.5) через TCP/IPv6, а потом через TCP/IPv4. Из-за IPv6 задержка была такой, что спотыкание процесса выполнения тестов было видно невооруженным взглядом.

Я на эти попытки подключения через IPv6 уже обращал внимания, но не придавал им особого значения. Ну не смог подключиться, ничего страшного. А оказалось «чего».

После явного указания подключения через IPv4 (inet4://localhost/d:\database\ibp_test_fb25_d3.gdb) все нормализовалось.

Результаты перезапуска (на новой тестовой базе данных)

Для fbclient.dll:

------------------------------------------- [SUMMARY INFORMATION]
[TESTS]
EXECUTED      : 17407
SUCCEEDED     : 17405
FAILED        : 0
WITH WARNINGS : 2 [ 2 warning(s) ]

- - - - - - - - - - - - - - - - - - - - - -
[TEST TIMES]
REAL          : 3720155706    [00:06:12.0155706]
USER          : 2020212950    [00:03:22.0212950]
KERNEL        : 382202450     [00:00:38.2202450]
TOTAL         : 2402415400    [00:04:00.2415400]

Для встроенного клиента:

------------------------------------------- [SUMMARY INFORMATION]
[TESTS]
EXECUTED      : 17407
SUCCEEDED     : 17405
FAILED        : 0
WITH WARNINGS : 2 [ 4 warning(s) ]

- - - - - - - - - - - - - - - - - - - - - -
[TEST TIMES]
REAL          : 3601447761    [00:06:00.1447761]
USER          : 1941588446    [00:03:14.1588446]
KERNEL        : 357242290     [00:00:35.7242290]
TOTAL         : 2298830736    [00:03:49.8830736]

Так что, теперь надо будет себя приучать явно указывать версию TCP/IP в строке подключения. Во избежание.

Leave a Comment