Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Как включить WireCompression на клиентах?  [new]
Вадим Мещеряков
Member

Откуда:
Сообщений: 32
Добрый день

Хочу для части клиентов включить сжатие данных.

В Release Notes написано:

To activate Wirecompression from the client side, pass the appropriate tag in the config item of the DPB
or SPB call:
isc_dbp_config/isc_sbp_config <string-length> "WireCompression=true"

Подскажите, пожалуйста,
если в firebird.conf на клиенте добавить WireCompression = True будет работать сжатие или нужно в компонентах доступа к данным передавать этот параметр во время коннекта?
15 фев 17, 09:10    [20212686]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6830
вроде должно работать. Проверить было бы быстрее, чем сюда писать :-) Только не забудь скопировать zlib1.dll в папку клиента.
15 фев 17, 09:41    [20212783]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6830
к вопросу "как проверить". Либо запустить с клиента ISQL, подключиться к базе на сервере и запросить show version. Либо с клиента прочитать MON$REMOTE_VERSION из MON$ATTACHMENTS для своего коннекта. В обоих случаях посмотреть на версию сетевого протокола, там будет PNN[:XY], где NN - версия протокола, а опциональные XY - флаги 'C' при включенном шифровании и 'Z' при включенном сжатии. Т.е., например, P13:Z означает включенное сжатие.
15 фев 17, 09:49    [20212811]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
Вадим Мещеряков
Member

Откуда:
Сообщений: 32
dimitr,
Сервер 64 бита
Проверяю в RDP сеансе на сервере
автор
ISQL show version
показывает P14:C - все отлично.

1. Подключаюсь к базе в IbExpert (указываю в настройке подключения fbclient.dll)
Версия протокола P14
2. Рядом с IbExpert кладу fbclient.dll, zlib1.dll (оба из дистрибутива 32 битного сервера) а потом еще и firebird.conf, в настройке подключения указываю полный путь до fbclient.dll
Версия протокола всегда P14
15 фев 17, 10:59    [20213099]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
hvlad
Member

Откуда:
Сообщений: 10195
Вадим Мещеряков,

какая строка коннекта в IBE ?
15 фев 17, 11:13    [20213164]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
Вадим Мещеряков
Member

Откуда:
Сообщений: 32
hvlad
какая строка коннекта в IBE ?


В IbExpert отображается такая строка: LOCALHOST/3050:G:\DelFin\Db\BASE.FDB
15 фев 17, 11:21    [20213196]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6830
Вадим Мещеряков
показывает P14:C - все отлично

это включено шифрование, а не сжатие. Что же тут отличного?
15 фев 17, 11:22    [20213199]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
Вадим Мещеряков
Member

Откуда:
Сообщений: 32
dimitr
это включено шифрование, а не сжатие. Что же тут отличного?

Наврал там было /P14:CZ
15 фев 17, 11:25    [20213215]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
Вадим Мещеряков
Member

Откуда:
Сообщений: 32
Вадим Мещеряков,

ISQL Version: WI-V3.0.1.32609 Firebird 3.0
Server version:
Firebird/Windows/AMD/Intel/x64 (access method), version "WI-V3.0.1.32609 Firebird 3.0"
Firebird/Windows/AMD/Intel/x64 (remote server), version "WI-V3.0.1.32609 Firebird 3.0/tcp (SRV-DELFIN)/P14:CZ"
Firebird/Windows/AMD/Intel/x64 (remote interface), version "WI-V3.0.1.32609 Firebird 3.0/tcp (SRV-DELFIN)/P14:CZ"
15 фев 17, 11:27    [20213221]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
Вадим Мещеряков
Member

Откуда:
Сообщений: 32
dimitr
к вопросу "как проверить". Либо запустить с клиента ISQL, подключиться к базе на сервере и запросить show version. Либо с клиента прочитать MON$REMOTE_VERSION из MON$ATTACHMENTS для своего коннекта


Странные вещи
ISQL show version показывает /P14:CZ

В тестовом приложении (с FireDAC) показывает

Server version = WI-V3.0.1.32609 Firebird 3.0
WI-V3.0.1.32609 Firebird 3.0/tcp (SRV-DELFIN)/P14:CZ
WI-V3.0.1.32609 Firebird 3.0/tcp (promservice001)/P14:CZ

А в MON$ATTACHMENTS.MON$REMOTE_VERSION показывает для этих же подключений P14

Как модно понять работает сжатие или нет?
15 фев 17, 13:33    [20213937]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2609
Вадим Мещеряков, WireShark ?
15 фев 17, 14:31    [20214264]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
Вадим Мещеряков
Member

Откуда:
Сообщений: 32
rdb_dev
WireShark ?

Это понятно что можно трафик смотреть, но хлопотно.

Если рядом с моим тестовым приложением и fbclient.dll лежит firebird.conf то можно включить сжатие изменением параметра в этом файле. Отключить шифрование изменением параметра в этом же файле не получается
15 фев 17, 14:52    [20214339]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
Вадим Мещеряков
Member

Откуда:
Сообщений: 32
rdb_dev,

Провел эксперимент
Установил на сервере WireShark
Поставил фильтр от сервера к клиенту
Сложил fbclient.dll, zlib1.dll,firebird.conf в каталог с IbExpert. Запустил из жтого каталога тестовую программу (FireDAC) показала P14:CZ
Запустил IbExpert (явно указал где ему взять fbclient.dll)
Cделал выборку с полным фетч 10000 записей с включенным в файле firebird.conf WireCompress и с выключенным
Примерно одинаковое количество пакетов 210
Одинаковый суммарный объем пакетов 760000 байт

Не работает сжатие?
Как его все таки запустить?
16 фев 17, 17:43    [20218835]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
hvlad
Member

Откуда:
Сообщений: 10195
Вадим Мещеряков
Сложил fbclient.dll, zlib1.dll,firebird.conf в каталог с IbExpert.
...
Запустил IbExpert (явно указал где ему взять fbclient.dll)
Где-то тут кто-то ошибся. И - зачем делать первое, при наличии второго ?

Возьми Process Explorer и проверь - какую версию fbclient на самом деле использует IBE, и загружает ли он при этом zlib1
16 фев 17, 17:50    [20218867]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
Вадим Мещеряков
Member

Откуда:
Сообщений: 32
hvlad
Где-то тут кто-то ошибся


Так и есть!
Все отлично работает!

Для включения сжатия нужно положить firebird.conf (WireCompression = true) и zlib1.dll рядом c fbclient.dll. и Все.
Результат в нашем приложении (анализировал трафик от сервера к клиенту) - в 3 раза меньше пакетов а общий размер пакетов меньше в 10 раз.

Спасибо за помощь.
16 фев 17, 20:10    [20219251]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
hvlad
Member

Откуда:
Сообщений: 10195
Вадим Мещеряков,

вот и прекрасно :)
16 фев 17, 21:53    [20219536]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как включить WireCompression на клиентах?  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8212
Апну старый топик, тоже решил научиться компрессовать трафик.
беру ISQL вроде бы вижу вожделенные буковки "P15:Z"
SQL> show version;
ISQL Version: LI-V3.0.5.33100 Firebird 3.0
Server version:
Firebird/Linux/AMD/Intel/x64 (access method), version "LI-V3.0.5.33100 Firebird 3.0"
Firebird/Linux/AMD/Intel/x64 (remote server), version "LI-V3.0.5.33100 Firebird 3.0/tcp (linux-ivan32)/P15:Z"
Firebird/Linux/AMD/Intel/x64 (remote interface), version "LI-V3.0.5.33100 Firebird 3.0/tcp (linux-ivan32)/P15:Z"
on disk structure version 12.0
SQL> select MON$REMOTE_VERSION from MON$attachments;

MON$REMOTE_VERSION
===============================================================================
<null>
<null>
P15
P15
P15
P15

SQL>

dimitr
Либо с клиента прочитать MON$REMOTE_VERSION из MON$ATTACHMENTS для своего коннекта.
А вот тут буковок не вижу, см. выше выхлоп ISQL.

Кому верить?

да, среди 4 конектов из атачмента есть виндовый, мой виндовый клиент подхватил троешного ФБ клиента, а тот в свою очередь прихватил zlib1.dll (судя по процесс эксплореру).
12 фев 19, 18:52    [21807758]     Ответить | Цитировать Сообщить модератору
 Re: Как включить WireCompression на клиентах?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9262
Ivan_Pisarevsky,

там и не должно быть.
В 4.0 появились отдельные поля MON$WIRE_COMPRESSED и MON$WIRE_ENCRYPTED
12 фев 19, 19:46    [21807804]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить