Как отключить сжатие передачи данных между клиентом и сервером 1с

1. Georg_QQ 20.03.18 11:14 Сейчас в теме
платформа 8.3.11, актуально для всей линейки, как и для 8.3.10. более ранние версии не проверял

Добрый день. Ситуация следующая. По умолчанию при входе в режим предприятия Клиент запускается с параметром "Режим: Серверный (сжатие: усиленное)"

В базе есть объемные документы (больше 30к строк на тч 1 документа). При включенном сжатии происходит следующее. Такой документ записывается в базу 2-5 сек. а передача данных между клиентом и сервером занимает 840 сек.

При отключении сжатия параметром запуска клиента "/TComp -None" общее время выполнения уменьшается до 37 сек. для deflate алгоритма общее время выполнения 90 сек. Т.е. используемый платформой алгоритм по умолчанию тормозит процесс больше чем в 20 раз. Ну и ждать 14 минут пока запишется 1 документ несерьезно. (для чистоты эксперимента, документ писался как в режиме проведения, так и режиме записи, как с выполнением процедур "ПередЗаписью" и "ОбработкаПроверкиЗаполнения" так и без них. разница по времени выполнения записи в бд 0.1-3 секунды. Когда общее время 14 минут - моно сказать что разницы нет.)

Собственно сам вопрос: как отключить это сжатие со стороны сервера, чтобы не прописывать каждому клиенту "/TComp -None" в параметры запуска? Клиентов много. да и многие используют web, на него вообще параметр запуска не прикрутить насколько я в курсе.
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
14. Дмитрий74Чел 234 06.04.18 12:03 Сейчас в теме
(4)

1) полагаю, что ввод строк в документ - не вручную, а загрузкой. тогда проще обработкой программно создавать документ и записывать в базу.
2) почему бы проводить документ не из формы документа, а из списка?
3) можно при запуске сеанса в общем модуле получать строку подключения, и если в ней нет флага отключения сжатия - перезапускать сеанс с новой строкой подключения с флагом.
ErrorEd88; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Cooler 22 20.03.18 15:47 Сейчас в теме
(1)
Собственно сам вопрос: как отключить это сжатие со стороны сервера
Этим вопросом задавались и до вас:
https://forum.infostart.ru/forum86/topic180971/

И не вчера, и даже не позавчера:
https://www.forum.mista.ru/topic.php?id=743770
https://www.forum.mista.ru/topic.php?id=643035

Похоже, что желаемого вами решения просто не существует: выбор режима задается клиентом.

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

Если бы был способ отключить сжатие на сервере и мы бы его отключили, то как осуществлялась бы работа с клиентом, которые требует сжатия? Не пущать его? Вряд ли это приемлемый способ.
6. Georg_QQ 21.03.18 12:41 Сейчас в теме
(2) Я согласен с вами что со стороны клиента должна быть возможность переопределить настройки подключения. Однако со стороны сервера должа быть возможность установить параметры по умолчанию. А таковой возможности как выходит просто не существует. и это как минимум странно.
8. Cooler 22 21.03.18 13:03 Сейчас в теме
(6)
Однако со стороны сервера должа быть возможность установить параметры по умолчанию.
Тогда это был бы не сервер - по определению, формат обмена (и не только в 1С) запрашивает клиент, а сервер либо принимает запрос, либо отказывает в обслуживании.

А в клиенте 1С (и, насколько я понимаю, в браузере при подключении через WEB - тоже) сжатие по умолчанию включено. Так с чего серверу капризничать?
5. roman77 303 21.03.18 12:40 Сейчас в теме
(1) Отправьте свой вопрос в поддержку v8@1c.ru. Можешь они вам какой-то секретный ключ для сервера сообщат.
21. Merc 40 06.05.18 14:34 Сейчас в теме
(1)
1. Используя сервисы/списки общих информационных баз, можно задавать клиентам параметры запуска централизовано (если их (списков) нет - пора завести)
2. Для веб клиентов можно модифицировать URI на стороне веб сервера (3)
22. Georg_Q 07.05.18 06:41 Сейчас в теме
(21) 2 не работает) подключение веб клиента игнорирует параметр /TComp в принципе. Про 1 можно подробнее?
23. Merc 40 07.05.18 07:26 Сейчас в теме
(22)
TComp


можно почитать на ИТС:

1. Про сервисы: Приложение 6. Интернет-сервисы получения списка общих информационных баз и дистрибутива клиентского приложения
2. Про списки: Списки общих информационных баз и ярлыки
2.1 Образец:
[ERP 2 - Тест центр (8.3.11)]
Connect=Srvr="K1709040:6541";Ref="КЭ_ERP2_ТестЦентр";
ID=8e56d628-9499-4a63-8e86-6ffae5b31ee8
OrderInList=950272
Folder=/Тест центр
OrderInTree=8192
External=0
ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.3
DefaultVersion=8.3.11.2867
AdditionalParameters=/DEBUG /TESTMANAGER /TComp -None
Показать


ПС: Действительно веб клиент игнорит параметр, ¯\_(ツ)_/¯,однако и усиленное сжатие по умолчанию не использует
user1512723; +1 Ответить
3. MariusUrsus 20.03.18 17:46 Сейчас в теме
Параметры запуска для веб клиента задаются в адресной строке подключения, например так

см. тут https://its.1c.ru/db/v838doc#bookmark:adm:TI000000502

а вообще эти симптомы явно указывают, на проблемы в самом документе.
30к строк на тч 1 документа

документ записывается в базу 2-5 сек

передача данных между клиентом и сервером занимает 840 сек


как минимум замеры производительности на запись и проведение этого документа произведите/покажите - думаю кандидаты на оптимизацию в виде неоптимальных запросов, обращений через точку или менеджеров записей вылезут сразу.
опыт подсказывает, что подкручивание настроек сервера не может происходить до бесконечности. в один прекрасный момент придется либо покупать ну очень мощный сервак, либо перепроектировать архитектуру и переписывать тонны кода.
4. Georg_QQ 21.03.18 12:33 Сейчас в теме
(3) Из-за специфики работы предприятия, сделать документ меньше не представляется возможным. Сервак итак ну ооооочень мощный.

Вот скрины сообщений меток времени выполнения процедуры на автоматически сгенерированной форме документа. со сжатием и без него.

&НаКлиенте
Процедура ЗаписатьДокумент()
ЗаписатьСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаписатьСервере();

ДокОбъект = ДанныеФормыВЗначение(Объект,Тип("ДокументОбъект.МойДокумент"));
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
ЗначениеВДанныеФормы(ДокОбъект,Объект);

КонецПроцедуры
Показать



Ощутимая разница. На форме и в модуле объекта выключено вообще все. ни одной строки кода, ни одной подписки. Т.е. просто гоняем данные туда-сюда со скоростью 10gbps. Поэтому грешить на оптимизацию кода не получается. Если вернуть документ к первоначальному виду. для указанной выше функции изменяется только время записи документа. с 0,03 до 0,4-1,1 сек в зависимости от текущей нагрузки.
Прикрепленные файлы:
7. MariusUrsus 21.03.18 12:56 Сейчас в теме
(4) Ох тыж! А как себя сеть и собственно сервер (загрузка процессора, использование памяти, обращение к диску) в эти 800 секунд? Есть замеры?
9. Georg_QQ 25.03.18 15:45 Сейчас в теме
(7)
А как себя сеть и собственно сервер в эти 800 секунд?


Скринов нет. Сейчас тут выходные. Но использование ресурсов мониторил. сеть выше 10% не нагружается в принципе. Серверная часть 1С ЦП 30-50%, память до 70% пиковая, в основном держалось в районе 40-50%. пиковая нагрузка на 1 rphost-процесс 15% ЦП, 1,5 гб памяти (не более 2 таких процессов одновременно), в среднем 1-3% и 300-400мб памяти. на сервере БД (MS SQL) замеры не делал. т.к. в процессе возврата управления клиенту не участвует. Клиентская часть при данном анализе ЦП выше 60% не нагружалась, памяти съедено было под 70%, т.к. большое количество RDP сессий. Текущий процесс 1с который ждет возврата с сервера выше 5% цп не нагружал. памяти сейчас не могу вспомнить сколько ел, но разница между простоем и записью документа была минимальной.

Сначала думал что виной блокировки. Но висит не запись, а возврат на клиент. т.е. по факту получаем либо сервер долго жмет пакеты перед отправкой либо эти вычисления по какой-то причине на серверной части не хотят выполняться параллельно и как будто висят в очереди, либо клиентская часть долго их распаковывает. Только монитор ресурсов четкого представления о происходящем не дал. с его точки зрения, свободных вычислительных мощностей еще с запасом.
Простым решением было выключить сжатие у всех, сняв излишнюю нагрузку. которая не нужна в данной конфигурации, освободив мощности для выполнения более необходимых операций. Сеть узким местом с такой пропускной способностью вряд ли станет. 10 гбит/сек изолированной сети вполне достаточно.
10. Cooler 22 25.03.18 16:02 Сейчас в теме
(9)
либо сервер долго жмет пакеты перед отправкой либо эти вычисления по какой-то причине на серверной части не хотят выполняться параллельно и как будто висят в очереди
Антивирус на сервере есть?
11. Georg_QQ 26.03.18 06:31 Сейчас в теме
(10)
Антивирус на сервере есть?
антивируса там нет. в плане безопасности рулит грамотный админ. за много лет работы ни одного сбоя по причине вирусов нет.
12. RustamZz 26.03.18 14:14 Сейчас в теме
(11) А как заполняется этот документ? Может быть не отображать ТЧ этого документа, а построить ДС если заполнение программное и нужно только отображать информацию из ТЧ? Или выводит в ТЗ порциями данные?
13. Georg_QQ 27.03.18 13:06 Сейчас в теме
(12)
А как заполняется этот документ?


ручное редактирование там тоже нужно) оптимизировать документ и форму практически некуда, все что можно не передавать на клиент итак не передается.

проблема то в другом) без сжатия док передается в 20 раз быстрее)
14. Дмитрий74Чел 234 06.04.18 12:03 Сейчас в теме
(4)

1) полагаю, что ввод строк в документ - не вручную, а загрузкой. тогда проще обработкой программно создавать документ и записывать в базу.
2) почему бы проводить документ не из формы документа, а из списка?
3) можно при запуске сеанса в общем модуле получать строку подключения, и если в ней нет флага отключения сжатия - перезапускать сеанс с новой строкой подключения с флагом.
ErrorEd88; +1 Ответить
15. Georg_QQ 06.04.18 14:26 Сейчас в теме
(14)

1. Документ заполняется по кнопке, но данные корректируются вручную.

2. потому что кнопочка "провести и закрыть" после редактирования его таки проводит) и почему-то даже если заменить ее на стандартную "Записать и закрыть" все равно проводит(даже непроведенный) и потому что оптимизация документа в сторону уменьшения удобства для пользователя не вариант) рисовать свою кнопку вариант, но не хочется.

3. А вот это идея. попробую. только для web клиента кажется все равно не отработает. т.к. параметр выключающий сжатие не работает для web. Система его просто игнорирует.
16. spacecraft 06.04.18 14:58 Сейчас в теме
(15)
1. Документ заполняется по кнопке, но данные корректируются вручную.

И сколько времени приходится пользователю тратить на корректирование вручную "больше 30к строк на тч 1 документа"?
Может что-то в бизнес-логике поправить?
19. Georg_Q 01.05.18 06:18 Сейчас в теме
(16) мы предлагали, клиентам удобно именно так. Они категорически против разбивки его на части.
25. user1012671 11.09.19 09:33 Сейчас в теме
(14)
можно при запуске сеанса в общем модуле получать строку подключения, и если в ней нет флага отключения сжатия - перезапускать сеанс с новой строкой подключения с флагом.

Спасибо за совет.
17. johnnyshut23 71 30.04.18 21:57 Сейчас в теме
что то, я сомневаюсь, что это хорошая идея!
18. user856012 13 30.04.18 22:05 Сейчас в теме
(17) Добыча $m путем замусоривания форума - точно не самая лучшая идея.
20. Georg_Q 01.05.18 06:19 Сейчас в теме
(17) а она полноценно и не работает. Но лучшего решения все равно нет.
24. user1172202 07.03.19 19:06 Сейчас в теме
1. Передавайте с клиента и на клиент только изменённые строки в функцию &НаСервереБезКонтекста.
2. Пакуйте на сервере всё, что можно*, в массив строк, а потом в одну строку через СтрСоединить. На клиенте распаковывайте с помощью СтрРазделить. В обратную сторону тоже.
* А можно всё, поскольку пользователь в конечном счёте воспринимает и вводит только текст, то бишь строки.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот