Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Отключить сжатие со стороны сервера

Отключить сжатие со стороны сервера
Я
   Georg_QQ
 
20.03.18 - 10:07
Добрый день. Ситуация следующая. Есть объемные документы. При включенном сжатии происходит следующее. Документ записывается в базу 2-5 сек. а передача данных между клиентом и сервером занимает 840 сек.

При отключении сжатия параметром запуска "/TComp -None" общее время выполнения уменьшается до 37 сек. для deflate общее время выполнения 90 сек. Т.е. используемый платформой алгоритм по умолчанию тормозит процесс больше чем в 20 раз. разница ощутима.

Как отключить это сжатие на стороне сервера? (клиентов больше 1000, разные базы. часть используют web в котором параметр запуска не пропишешь в принципе) гугл не помог.
 
 
   Georg_QQ
 
1 - 20.03.18 - 11:17
платформа 8.3.11, актуально для всей линейки, как и для 8.3.10.

подразумевается клиент-серверный вариант с ms sql
   H A D G E H O G s
 
2 - 20.03.18 - 11:51
Какая конфигурация?
   Fragster
 
3 - 20.03.18 - 11:58
не хватает процессора, а сети хватает с избытком. бывает такое.
   lodger
 
4 - 20.03.18 - 12:11
(0) на уф же не весь документобъект сериализуется к отправке на клиент?
   Georg_QQ
 
5 - 20.03.18 - 12:13
(3) Логично что не хватает. Это я понял) Вопрос как выключить сжатие, которое ему мешает. Разницы кстати нет, что 1 пользователь в сети, что 800. те же 840 секунд +-20
   Georg_QQ
 
6 - 20.03.18 - 12:15
(4) не вижу как это могло бы повлиять. документ записывал как с модифицированностью так и без. изменение времени выполнения практически нет.
   H A D G E H O G s
 
7 - 20.03.18 - 12:22
Множественные, избыточные вызовы сервера вангую.
   lodger
 
8 - 20.03.18 - 12:25
а я вангую ненужный на клиенте объем данных.
например ТЗ со всеми строками.
   Georg_QQ
 
9 - 20.03.18 - 12:26
(2) 1. физ сервер. 2 проца (intel xeon cpu e7-8857 v2)

3 виртуальных машины. Отдельно БД MS SQL 2016 (64gb ram 12 лог. ядер процессора (2х6)), отдельно сервер приложений 1с (32gb ram 4 ядра (2х2) ), отдельно RDP + IIS (64gb 24 ядра  (2*12)) все в среде vmware. каждая виртуалка на своей группе хардов. вирт.сеть 10gbps изолированная.

Распределение ресурсов в соответствии с рекомендациями 1С
   Georg_QQ
 
10 - 20.03.18 - 12:29
(7) в тестовой среде было выключено все. Форма документа пересоздана по умолчанию без процедур и оформления. процедуры в модуле объекта и все подписки отключены. т.е. голая запись объекта в базу интерактивно. без дополнительного кода. множественным вызовам по стандартной кнопке "Записать" взяться просто неоткуда.
 
 Рекламное место пустует
   Georg_QQ
 
11 - 20.03.18 - 12:31
(8) к сожалению объем данных не избыточен. Он просто большой.
   Georg_QQ
 
12 - 20.03.18 - 12:33
проблема длительного выполнения записи решается отключением сжатия. только вот не могу найти как отключить это самое сжатие по умолчанию для всех подключений.
   lodger
 
13 - 20.03.18 - 12:37
   H A D G E H O G s
 
14 - 20.03.18 - 12:38
(8) ТЗ со всеми строками бывает на клиенте тогда, когда ее пользователь промотает
   Georg_QQ
 
15 - 20.03.18 - 12:39
(13) нет, не мой коллега. но на его вопрос уже попадал пока искал решение в гугле.
   H A D G E H O G s
 
16 - 20.03.18 - 12:40
Это вам расплата за виртуалки :-)
   Georg_QQ
 
17 - 20.03.18 - 12:41
(14) А понял. Нет, можно было просто открыть документ (уже существующий, или скопировать уже существующий (на вновь созданной форме процедур не было, заполнение отсутствовало)
нажать записать, не трогая тч и при наличии сжатия 14 минут ожидания возврата управления пользователю. при выключенном сжатии 30-40 сек.
   Georg_QQ
 
18 - 20.03.18 - 12:43
(16) Было такое предположение. Но отключение сжатия снимает проблему практически полностью. Поэтому грешить на виртуалки получается не совсем, точнее вообще не получается.
   lodger
 
19 - 20.03.18 - 12:44
что-то мне подсказывает, что если поглядеть в default.vrd,
то мы увидим параметры коннехта к агенту 1с.
знать бы какие есть ключи у этих:
xmlns="http://v8.1c.ru/8.2/virtual-resource-system
xmlns:xs="http://www.w3.org/2001/XMLSchema
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
   H A D G E H O G s
 
20 - 20.03.18 - 12:44
(17) У вас проблемы не там, где вы ищите.
Даже без выключения сжатия, запись документа с 2 ТЧ по 1000 строк - не более 2 секунд в самом худшем случае.
   Georg_QQ
 
21 - 20.03.18 - 12:48
(20) 2000 строк 0.7 сек. - без сжатия.

30 тыс строк.
30-40 сек. - без сжатия
~14 минут - со сжатием.

сама запись в БД на тестовой базе. (кодом полностью на сервере) 0.04-0.46 сек - 2 тыс строк. 0.9-1.9 сек 30 тыс строк в зависимости от заполнения.
   H A D G E H O G s
 
22 - 20.03.18 - 12:51
(21)

Есть документ в базе, на 30 тыс строк, его тупо открываем и нажимаем кнопку "Записать"?

или
Создаем новый документ, загружаем в него 30 тыс строк из excel, и нажимаем кнопку "Записать"?
   lodger
 
23 - 20.03.18 - 12:52
+ (19) в строку ib="Srvr="localhost:1641";Ref="BolshayaBaza";"
не пробовали добавить параметр "/TComp -None" ?
параметр юзера и пароль туда можно вписывать.
   Georg_QQ
 
24 - 20.03.18 - 12:55
(22) оба варианта задержка со сжатием ~840сек +-10-20 сек.
   Georg_QQ
 
25 - 20.03.18 - 12:58
(23) а полную строку с параметром привести можете, я сколько пробовал. просто падает возможность подключения.

Если получится, то это решит проблему с web. наполовину легче)

Только для тонкого проблема останется.
   lodger
 
26 - 20.03.18 - 13:01
синтаксис параметров примерно такой:
параметр=ЗначениеПараметра + ";;" + параметр2=ЗначениеПараметра2
значит надо добавить ;; имя парметра у нас TComp=
значение -None или просто None, возможно надо обрамить кавычками " и "
всего 4 варианта перепробовать надо. мне лень... (:
   Georg_QQ
 
27 - 20.03.18 - 13:10
(26) окей, я попробую. Но вопрос, остается открытым как выключить сжатие по умолчанию для всех подключений.
   lodger
 
28 - 20.03.18 - 13:29
(27) если я все правильно понимаю, то у агента сервера нет такого параметра.
использование сжатия определяется на стороне клиента (в случае веб-сервиса в IISe\Apache).
   Georg_QQ
 
29 - 20.03.18 - 14:28
(28) т.е. отключить сжатие со стороны сервера невозможно? какая прелесть.
   lodger
 
30 - 20.03.18 - 15:03
(29) по ходу дела, сервер обслуживает любой уровень сжатия и он устанавливается автоматом на каждый сеанс, в зависимости от его параметров.
имхо, подробнее только хотлайн ответит.
   H A D G E H O G s
 
31 - 20.03.18 - 15:04
Откройте форму документа в конфигураторе, найдите вашу гигантскую таблицу и уберите галку "использовать всегда". Попробуйте сохранить документ
   lodger
 
32 - 20.03.18 - 15:17
(31) +1.
слабо вериться, что в каждой жизненной ситуации на клиент передается весь *любой* массив данных.
документобъект на клиенте состоит из реквизитов, где только ссылки (гуиды), и видимой части ТЧ, которая зовется ДанныеФормыКоллекция. вот в ней должно быть данных не сильно больше чем влазит в окно с ТЧ. зачем гонять всю ТЧ туда-сюда не понятно.
   Georg_QQ
 
33 - 20.03.18 - 15:41
(32) я не говорю что оно гоняет туда сюда все постоянно. но вот какая ситуация.

создал для этого документа форму. новую автоматом. никаких процедур и функций нет.

далее. добавил к нему процедуру с метками времени. Передача управления серверу. преобразование реквизита формы в объект, запись объекта, преобразование объекта в реквизит формы, передача управления клиенту.

итого получилось то что на этих двух картинках. Одно со сжатием, одно без сжатия соответственно

https://files.icq.net/get/07U2RAjrh8xwm7XOEfLhfV5ab1000f1ab

https://files.icq.net/get/07f38UKpdE2cGzRVxOuWss5ab100101ab

Если сервер и клиент 1с находятся на 1 машине, то сжатие не дает эффекта и задержки сравни с вариантом без сжатия.
 
 
   H A D G E H O G s
 
34 - 20.03.18 - 15:45
(33) Галочку убрал?
   H A D G E H O G s
 
35 - 20.03.18 - 15:47
"Если сервер и клиент 1с находятся на 1 машине, то сжатие не дает эффекта и задержки сравни с вариантом без сжатия."

Очень странная фраза.
Если сервер и клиент 1С находятся на 1 машине - используется loopback и смысла в сжатии = нет и, значит, без сжатия - будет быстрее.
Если сервер и клиент 1С находятся на разных машинах - бутед использоваться сеть и тут возможны варианты.
   H A D G E H O G s
 
36 - 20.03.18 - 15:47
(33) Что по времени, когда сервер 1С и клиент находятся на одной машине?
   lodger
 
37 - 20.03.18 - 15:56
(33) вот это вот "преобразование реквизита формы в объект, запись объекта, преобразование объекта в реквизит формы" - зачем?
это уже объект. почему нельзя .записать()?
   Georg_QQ
 
38 - 20.03.18 - 15:59
(36) если на одной машине и клиент и сервер 1с, то отрабатывает с задержкой как без сжатия. хотя в справке прописано сжатие усиленное.

насчет галочки эффекта нет, т.к. таблица отображается на форме документа.
   Georg_QQ
 
39 - 20.03.18 - 16:00
(37) эм. нет. УФ. Реквизитформы с типом ДокументОбъект и ДокументОбъект - это разные типы.
   Georg_QQ
 
40 - 20.03.18 - 16:06
(37) сама функция сделана просто чтобы отслеживать время. и наглядно увидеть какая именно часть тормозит при записи документа. по сути урезанный аналог кнопки записать, т.к. не провоцирует вызов событий формы.

вот листинг

&НаСервере
Процедура ЗаписатьПадарасаНаСервере(НачалоПередачи, КонецПередачи)
    
    КонецПередачи = ТекущаяУниверсальнаяДатаВМиллисекундах();
    
    Время = (КонецПередачи - НачалоПередачи)/1000;
    Сообщить("Время передачи данных на сервер: " + Время);
    
    
    
    Начало = ТекущаяУниверсальнаяДатаВМиллисекундах();
                
    ДокОбъект = ДанныеФормыВЗначение(Объект,Тип("ДокументОбъект.ЗП_НачислениеЗарплаты"));
    
    Конец  = ТекущаяУниверсальнаяДатаВМиллисекундах();
    
    ВремяОтправки = (Конец - Начало) / 1000;
            
    Начало = ТекущаяУниверсальнаяДатаВМиллисекундах();
    
    ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
    
    Конец  = ТекущаяУниверсальнаяДатаВМиллисекундах();
    
    ВремяЗаписи = (Конец - Начало) / 1000;
    
    
    Начало = ТекущаяУниверсальнаяДатаВМиллисекундах();
    
    ЗначениеВДанныеФормы(ДокОбъект,Объект);
    Конец  = ТекущаяУниверсальнаяДатаВМиллисекундах();
    
    Времявозврата = (Конец - Начало) / 1000;
    
    Сообщить("Время преобразования в объект: " + ВремяОтправки + Символы.ПС + "Время записи: " + ВремяЗаписи + Символы.ПС + "Время преобразования из объекта: " + Времявозврата );
    
    Модифицированность = Ложь;
    
    НачалоПередачи = ТекущаяУниверсальнаяДатаВМиллисекундах();
    
КонецПроцедуры

&НаКлиенте
Процедура ЗаписатьПадараса(Команда)
    
    Начало = ТекущаяУниверсальнаяДатаВМиллисекундах();
    
    НачалоПередачи = Начало;
    
    КонецПередачи = Неопределено;
    
    ЗаписатьПадарасаНаСервере(НачалоПередачи,КонецПередачи);
    
    КонецПередачи = ТекущаяУниверсальнаяДатаВМиллисекундах();
    
    ВремяВозврата = (КонецПередачи - НачалоПередачи) / 1000;
    
    Сообщить("Время возврата с сервера: " + Времявозврата);
    
    Конец  = ТекущаяУниверсальнаяДатаВМиллисекундах();
    
    Времявозврата = (Конец - Начало) / 1000;
    
    
    
    Сообщить("Общее время выполнения: " + Времявозврата);
    
КонецПроцедуры
   Georg_QQ
 
41 - 20.03.18 - 16:39
Так как побороть такие задержки. 30-40 сек без сжатия терпимо, но тоже как-то ни разу не весело.
   lodger
 
42 - 20.03.18 - 17:29
(39) вы превратно поняли вопрос. вернитесь в реальное применение формы документа.
   Georg_QQ
 
43 - 21.03.18 - 12:55
(42) не понял что вы имеете ввиду
   H A D G E H O G s
 
44 - 21.03.18 - 12:58
А можно выгрузку базы? Вот не верю я, что такие задержки есть.
   H A D G E H O G s
 
45 - 21.03.18 - 12:58
Вернее, что проблема в сжатии и коде.
   H A D G E H O G s
 
46 - 21.03.18 - 12:58
Можно на liveups@yandex.ru
   Georg_QQ
 
47 - 23.03.18 - 14:25
(46) ушло на почту liveups@yandex.ru с результатами еще одного теста на другом железе

(5) правка. разницы между 1 пользователем и 800+ - есть.
Но появляется только после перезапуска сервера предприятия (не ос, рестарт службы). при 1 пользователе в сети имеем ~15 сек без сжатия, ~30 сек со сжатием.
   H A D G E H O G s
 
48 - 23.03.18 - 14:27
(47) Сейчас посмотрим
   H A D G E H O G s
 
49 - 23.03.18 - 15:28
(47) Мои замеры
29,184 секунд с усиленным (от 1С) сжатием.
15,179 секунд - без сжатия.
15,180 секунд - с сжатием deflate.
 
 Рекламное место пустует
   H A D G E H O G s
 
50 - 23.03.18 - 15:29
8.3.10
i5-3450s, все на одной машине.
   H A D G E H O G s
 
51 - 23.03.18 - 15:29
Надо еще трафик померять
   H A D G E H O G s
 
52 - 23.03.18 - 15:30
И усреднить показания 10 прогонами
   H A D G E H O G s
 
53 - 23.03.18 - 15:34
Как всегда - все упирается в ядро проца. 25% загрузки ровно - то клиент 1сv8c, то сервер rphost
   H A D G E H O G s
 
54 - 23.03.18 - 15:57
10 проходов
Общее время выполнения (Без сжатия): 160,375
Общее время выполнения (deflate): 157,715
Общее время выполнения (SDC): 248,361
   H A D G E H O G s
 
55 - 23.03.18 - 16:24
Без сжатия - 1 проход - 17182 Кб трафика
deflate - 1 проход - 392 Кб трафика
SDC - 1 проход - 345 Кб трафика
   H A D G E H O G s
 
56 - 23.03.18 - 16:25
Такой мощный коэффициент сжатия объясняется дублирующимися данными у автора.
   H A D G E H O G s
 
57 - 23.03.18 - 16:32
Но все равно, SDC, хоть и жмет лучше (не критично), но работает дольше раза в полтора.

А теперь посмотрим на цифры.
160 секунд у нас идет сериализация, чистая.
Значит, в случае типового сжатия, 248-160 секунд у нас идет тупо сжатие, которое можно заменить почти нулевым deflate-ом с небольшими потерями в трафике, для локальных сетей ненапряжными. Я бы сказал, что потеря 12% трафика актуальна, ну я не знаю, в GPRS-е, наверное.

Таким образом замена типового сжатия на deflate даст 35% выигрыша на клиент-серверный обмен.

Еще бы получить подтверждаемость от других участников и опровержения :-)
   H A D G E H O G s
 
58 - 23.03.18 - 16:33
", но работает дольше раза в полтора. "
Не в полтора раза (50%), а на 35%, если я верно посчитал.
   H A D G E H O G s
 
59 - 23.03.18 - 16:33
Еще можно потестировать на недублирующихся данных.
   Georg_QQ
 
60 - 24.03.18 - 06:11
(59) ну и я о том же) написал в суппорт 1с вопрос есть ли возможность переопределить параметры сжатия при подключении к серверу по умолчанию, со стороны сервера, или они заданы только в клиентской части. На других форумах говорят что это клиентская часть запрашивает работу со сжатием по умолчанию и со стороны сервера не переопределить.
   Georg_QQ
 
61 - 06.04.18 - 14:29
(26) никакой вариант не работает. для web система просто игнорирует этот параметр
   Georg_QQ
 
62 - 06.04.18 - 14:32
(60) со стороны сервера штатно отключить не получится, нет такой возможности. но как решение для конкретной конфигурации - проверять строку подключения и перезапускать сеанс если нет параметра отключающего сжатие с добавлением этого параметра.
   Вафель
 
63 - 06.04.18 - 14:51
Разве галочка "Испольлзовать всегда" не убирает только НЕВИДИМЫЕ реквизиты?
   Fragster
 
64 - 06.04.18 - 22:51
(61) вряд ли в веб не дефлэйт/гзип, а поделка 1с на js
   Aleksey
 
65 - 06.04.18 - 22:55
(57) ну так а что запустить то надо
   Провинциальный 1сник
 
66 - 07.04.18 - 04:37
(64) К веб-серверу может подключаться тонкий клиент, и в нём можно задать сжатие. В отличие от браузера.
   Fragster
 
67 - 08.04.18 - 19:13
(66) запросто. Для файрфокса: заходишь в about:config, ищешь параметр network.http.accept-encoding;gzip, deflate, очищаешь. Всё, сжатие между сервером и браузером пропало. Далее только если реализована кривая и тормозная поделка на js.
   Fragster
 
68 - 08.04.18 - 19:15
ну, или конкретно применительно к 1с, можно добавлять параметры командной строки в ссылку с базой, примерно так:
http://сервер/путь/к/базе/?L=ru&VL=ru_RU
   0xFFFFFF
 
69 - 08.04.18 - 20:56
Что это за файлы? Видеоролики?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует