Релиз IBProvider v3.52.1

Привет всем.

Выпущен новый релиз IBProvider v3.52.1.

В процессе борьбы с Windows 10 build 1803 пришлось осваивать «Perfomance Profiler» из состава Visual Studio 2017. Ну и, среди всего прочего, он сказал, что в провайдере «много» вызовов системной функции VariantChangeType.

Самое интересное то, что в провайдере уже было все подготовлено для решения этой «проблемы». Поэтому избавиться от этих избыточных вызовов было достаточно просто.

«Perfomance Profiler» успокоился, но в целом это не помогло решить проблему с 1803 — она как тупила, так и продолжила тупить. Поэтому была откачена назад до сборки 1709.

Тем не менее, думаю, это все равно очень полезное обновление. Чем меньше провайдер завязан на внешний мир, тем он надежнее.

И насчет надежности.

Новая версия, как обычно, проехала через нагрузочное тестирование с FB 3.0.4.33035.

При тестировании (в четыре потока) 64-битной релизной сборки провайдера без использования fbclient.dll мы видим такую картину:

[29.08.2018 23:11:21] [info] Provider DLL    :lcpi.ibprovider_v3_vc15_w64_prof_i.dll
[29.08.2018 23:11:21] [info] Provider Version:3.52.1.28912
[29.08.2018 23:11:21] [info] Server Name     :Firebird
[29.08.2018 23:11:21] [info] Server Version  :3.0.4.33035
[29.08.2018 23:11:21] [info] Client Name     :LCPI.IBProvider.RemoteFB
[29.08.2018 23:11:21] [info] Client Version  :3.52.1.28912
[29.08.2018 23:11:21] [info] Database ODS    :12.0
[29.08.2018 23:11:21] [info] Database Dialect:3
...
[30.08.2018 17:50:47] [summary] [VIRTUAL MEMORY]
[30.08.2018 17:50:47] [summary] 
[30.08.2018 17:50:47] [summary] PRIVATE BYTES      : 13752 KB       [13MB 440KB]
[30.08.2018 17:50:47] [summary] PEAK PRIVATE BYTES : 12667804 KB    [12GB 82MB 924KB]
[30.08.2018 17:50:47] [summary] VIRTUAL SIZE       : 153776 KB      [150MB 176KB]
[30.08.2018 17:50:47] [summary] PAGE FAULT COUNT   : 121740954
[30.08.2018 17:50:47] [summary] 
[30.08.2018 17:50:47] [summary] - - - - - - - - - - - - - - - - - - - - - -
[30.08.2018 17:50:47] [summary] [HANDLES]
[30.08.2018 17:50:47] [summary] 
[30.08.2018 17:50:47] [summary] HANDLES            : 155
[30.08.2018 17:50:47] [summary] 
[30.08.2018 17:50:47] [summary] - - - - - - - - - - - - - - - - - - - - - -
[30.08.2018 17:50:47] [summary] TOTAL ERRORS  : 0
[30.08.2018 17:50:47] [summary] TOTAL WARNINGS: 72
[30.08.2018 17:50:47] [summary] FULL PASSES   : 1
[30.08.2018 17:50:47] [summary] GEN TESTS     : 8295133

А через fbclient.dll, мы видим следующее:

[31.08.2018 12:10:21] [info] Provider DLL    :lcpi.ibprovider_v3_vc15_w64_prof_i.dll
[31.08.2018 12:10:21] [info] Provider Version:3.52.1.28912
[31.08.2018 12:10:21] [info] Server Name     :Firebird
[31.08.2018 12:10:21] [info] Server Version  :3.0.4.33035
[31.08.2018 12:10:21] [info] Client Name     :Firebird
[31.08.2018 12:10:21] [info] Client Version  :3.0.4.33035
[31.08.2018 12:10:21] [info] Database ODS    :12.0
[31.08.2018 12:10:21] [info] Database Dialect:3
...
[01.09.2018 08:01:01] [summary] ------------------------------------------- [PROCESS INFORMATION]
[01.09.2018 08:01:01] [summary] [VIRTUAL MEMORY]
[01.09.2018 08:01:01] [summary] 
[01.09.2018 08:01:01] [summary] PRIVATE BYTES      : 93112 KB       [90MB 952KB]
[01.09.2018 08:01:01] [summary] PEAK PRIVATE BYTES : 12721560 KB    [12GB 135MB 408KB]
[01.09.2018 08:01:01] [summary] VIRTUAL SIZE       : 268916 KB      [262MB 628KB]
[01.09.2018 08:01:01] [summary] PAGE FAULT COUNT   : 507309980
[01.09.2018 08:01:01] [summary] 
[01.09.2018 08:01:01] [summary] - - - - - - - - - - - - - - - - - - - - - -
[01.09.2018 08:01:01] [summary] [HANDLES]
[01.09.2018 08:01:01] [summary] 
[01.09.2018 08:01:01] [summary] HANDLES            : 236
[01.09.2018 08:01:01] [summary] 
[01.09.2018 08:01:01] [summary] - - - - - - - - - - - - - - - - - - - - - -
[01.09.2018 08:01:01] [summary] TOTAL ERRORS  : 30
[01.09.2018 08:01:01] [summary] TOTAL WARNINGS: 47
[01.09.2018 08:01:01] [summary] FULL PASSES   : 1
[01.09.2018 08:01:01] [summary] GEN TESTS     : 8295133

Зависшая память это следствие непутевого дизайна инициализации/деинициализации fbclient.dll.

Ошибки — это баги взаимодействия fbclient с сервером, которые можно обойти.

Варнинги в обоих случаях — это баги сервера (по большому счету — протокола), которые уже не перепрыгнешь. Хотя, по идее, если в первом случае указать в строке подключения «remote:protocol_type=rpc», то проблем не будет. Но этот «rpc» был зарезан в FB3.0, поэтому это лекарство для него недоступно.

Этот маленький анализ посвящается всем, кто предпочитает «native» методы подключения к Firebird.

Leave a Comment