|
Отключить сжатие со стороны сервера | ☑ | ||
---|---|---|---|---|
0
Georg_QQ
20.03.18
✎
10:07
|
Добрый день. Ситуация следующая. Есть объемные документы. При включенном сжатии происходит следующее. Документ записывается в базу 2-5 сек. а передача данных между клиентом и сервером занимает 840 сек.
При отключении сжатия параметром запуска "/TComp -None" общее время выполнения уменьшается до 37 сек. для deflate общее время выполнения 90 сек. Т.е. используемый платформой алгоритм по умолчанию тормозит процесс больше чем в 20 раз. разница ощутима. Как отключить это сжатие на стороне сервера? (клиентов больше 1000, разные базы. часть используют web в котором параметр запуска не пропишешь в принципе) гугл не помог. |
|||
1
Georg_QQ
20.03.18
✎
11:17
|
платформа 8.3.11, актуально для всей линейки, как и для 8.3.10.
подразумевается клиент-серверный вариант с ms sql |
|||
2
H A D G E H O G s
20.03.18
✎
11:51
|
Какая конфигурация?
|
|||
3
Fragster
гуру
20.03.18
✎
11:58
|
не хватает процессора, а сети хватает с избытком. бывает такое.
|
|||
4
lodger
20.03.18
✎
12:11
|
(0) на уф же не весь документобъект сериализуется к отправке на клиент?
|
|||
5
Georg_QQ
20.03.18
✎
12:13
|
(3) Логично что не хватает. Это я понял) Вопрос как выключить сжатие, которое ему мешает. Разницы кстати нет, что 1 пользователь в сети, что 800. те же 840 секунд +-20
|
|||
6
Georg_QQ
20.03.18
✎
12:15
|
(4) не вижу как это могло бы повлиять. документ записывал как с модифицированностью так и без. изменение времени выполнения практически нет.
|
|||
7
H A D G E H O G s
20.03.18
✎
12:22
|
Множественные, избыточные вызовы сервера вангую.
|
|||
8
lodger
20.03.18
✎
12:25
|
а я вангую ненужный на клиенте объем данных.
например ТЗ со всеми строками. |
|||
9
Georg_QQ
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С |
|||
10
Georg_QQ
20.03.18
✎
12:29
|
(7) в тестовой среде было выключено все. Форма документа пересоздана по умолчанию без процедур и оформления. процедуры в модуле объекта и все подписки отключены. т.е. голая запись объекта в базу интерактивно. без дополнительного кода. множественным вызовам по стандартной кнопке "Записать" взяться просто неоткуда.
|
|||
11
Georg_QQ
20.03.18
✎
12:31
|
(8) к сожалению объем данных не избыточен. Он просто большой.
|
|||
12
Georg_QQ
20.03.18
✎
12:33
|
проблема длительного выполнения записи решается отключением сжатия. только вот не могу найти как отключить это самое сжатие по умолчанию для всех подключений.
|
|||
13
lodger
20.03.18
✎
12:37
|
(12) ваш коллега https://forum.infostart.ru/forum86/topic180971/
|
|||
14
H A D G E H O G s
20.03.18
✎
12:38
|
(8) ТЗ со всеми строками бывает на клиенте тогда, когда ее пользователь промотает
|
|||
15
Georg_QQ
20.03.18
✎
12:39
|
(13) нет, не мой коллега. но на его вопрос уже попадал пока искал решение в гугле.
|
|||
16
H A D G E H O G s
20.03.18
✎
12:40
|
Это вам расплата за виртуалки :-)
|
|||
17
Georg_QQ
20.03.18
✎
12:41
|
(14) А понял. Нет, можно было просто открыть документ (уже существующий, или скопировать уже существующий (на вновь созданной форме процедур не было, заполнение отсутствовало)
нажать записать, не трогая тч и при наличии сжатия 14 минут ожидания возврата управления пользователю. при выключенном сжатии 30-40 сек. |
|||
18
Georg_QQ
20.03.18
✎
12:43
|
(16) Было такое предположение. Но отключение сжатия снимает проблему практически полностью. Поэтому грешить на виртуалки получается не совсем, точнее вообще не получается.
|
|||
19
lodger
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 |
|||
20
H A D G E H O G s
20.03.18
✎
12:44
|
(17) У вас проблемы не там, где вы ищите.
Даже без выключения сжатия, запись документа с 2 ТЧ по 1000 строк - не более 2 секунд в самом худшем случае. |
|||
21
Georg_QQ
20.03.18
✎
12:48
|
(20) 2000 строк 0.7 сек. - без сжатия.
30 тыс строк. 30-40 сек. - без сжатия ~14 минут - со сжатием. сама запись в БД на тестовой базе. (кодом полностью на сервере) 0.04-0.46 сек - 2 тыс строк. 0.9-1.9 сек 30 тыс строк в зависимости от заполнения. |
|||
22
H A D G E H O G s
20.03.18
✎
12:51
|
(21)
Есть документ в базе, на 30 тыс строк, его тупо открываем и нажимаем кнопку "Записать"? или Создаем новый документ, загружаем в него 30 тыс строк из excel, и нажимаем кнопку "Записать"? |
|||
23
lodger
20.03.18
✎
12:52
|
+ (19) в строку ib="Srvr="localhost:1641";Ref="BolshayaBaza";"
не пробовали добавить параметр "/TComp -None" ? параметр юзера и пароль туда можно вписывать. |
|||
24
Georg_QQ
20.03.18
✎
12:55
|
(22) оба варианта задержка со сжатием ~840сек +-10-20 сек.
|
|||
25
Georg_QQ
20.03.18
✎
12:58
|
(23) а полную строку с параметром привести можете, я сколько пробовал. просто падает возможность подключения.
Если получится, то это решит проблему с web. наполовину легче) Только для тонкого проблема останется. |
|||
26
lodger
20.03.18
✎
13:01
|
синтаксис параметров примерно такой:
параметр=ЗначениеПараметра + ";;" + параметр2=ЗначениеПараметра2 значит надо добавить ;; имя парметра у нас TComp= значение -None или просто None, возможно надо обрамить кавычками " и " всего 4 варианта перепробовать надо. мне лень... (: |
|||
27
Georg_QQ
20.03.18
✎
13:10
|
(26) окей, я попробую. Но вопрос, остается открытым как выключить сжатие по умолчанию для всех подключений.
|
|||
28
lodger
20.03.18
✎
13:29
|
(27) если я все правильно понимаю, то у агента сервера нет такого параметра.
использование сжатия определяется на стороне клиента (в случае веб-сервиса в IISe\Apache). |
|||
29
Georg_QQ
20.03.18
✎
14:28
|
(28) т.е. отключить сжатие со стороны сервера невозможно? какая прелесть.
|
|||
30
lodger
20.03.18
✎
15:03
|
(29) по ходу дела, сервер обслуживает любой уровень сжатия и он устанавливается автоматом на каждый сеанс, в зависимости от его параметров.
имхо, подробнее только хотлайн ответит. |
|||
31
H A D G E H O G s
20.03.18
✎
15:04
|
Откройте форму документа в конфигураторе, найдите вашу гигантскую таблицу и уберите галку "использовать всегда". Попробуйте сохранить документ
|
|||
32
lodger
20.03.18
✎
15:17
|
(31) +1.
слабо вериться, что в каждой жизненной ситуации на клиент передается весь *любой* массив данных. документобъект на клиенте состоит из реквизитов, где только ссылки (гуиды), и видимой части ТЧ, которая зовется ДанныеФормыКоллекция. вот в ней должно быть данных не сильно больше чем влазит в окно с ТЧ. зачем гонять всю ТЧ туда-сюда не понятно. |
|||
33
Georg_QQ
20.03.18
✎
15:41
|
(32) я не говорю что оно гоняет туда сюда все постоянно. но вот какая ситуация.
создал для этого документа форму. новую автоматом. никаких процедур и функций нет. далее. добавил к нему процедуру с метками времени. Передача управления серверу. преобразование реквизита формы в объект, запись объекта, преобразование объекта в реквизит формы, передача управления клиенту. итого получилось то что на этих двух картинках. Одно со сжатием, одно без сжатия соответственно https://files.icq.net/get/07U2RAjrh8xwm7XOEfLhfV5ab1000f1ab https://files.icq.net/get/07f38UKpdE2cGzRVxOuWss5ab100101ab Если сервер и клиент 1с находятся на 1 машине, то сжатие не дает эффекта и задержки сравни с вариантом без сжатия. |
|||
34
H A D G E H O G s
20.03.18
✎
15:45
|
(33) Галочку убрал?
|
|||
35
H A D G E H O G s
20.03.18
✎
15:47
|
"Если сервер и клиент 1с находятся на 1 машине, то сжатие не дает эффекта и задержки сравни с вариантом без сжатия."
Очень странная фраза. Если сервер и клиент 1С находятся на 1 машине - используется loopback и смысла в сжатии = нет и, значит, без сжатия - будет быстрее. Если сервер и клиент 1С находятся на разных машинах - бутед использоваться сеть и тут возможны варианты. |
|||
36
H A D G E H O G s
20.03.18
✎
15:47
|
(33) Что по времени, когда сервер 1С и клиент находятся на одной машине?
|
|||
37
lodger
20.03.18
✎
15:56
|
(33) вот это вот "преобразование реквизита формы в объект, запись объекта, преобразование объекта в реквизит формы" - зачем?
это уже объект. почему нельзя .записать()? |
|||
38
Georg_QQ
20.03.18
✎
15:59
|
(36) если на одной машине и клиент и сервер 1с, то отрабатывает с задержкой как без сжатия. хотя в справке прописано сжатие усиленное.
насчет галочки эффекта нет, т.к. таблица отображается на форме документа. |
|||
39
Georg_QQ
20.03.18
✎
16:00
|
(37) эм. нет. УФ. Реквизитформы с типом ДокументОбъект и ДокументОбъект - это разные типы.
|
|||
40
Georg_QQ
20.03.18
✎
16:06
|
(37) сама функция сделана просто чтобы отслеживать время. и наглядно увидеть какая именно часть тормозит при записи документа. по сути урезанный аналог кнопки записать, т.к. не провоцирует вызов событий формы.
вот листинг &НаСервере Процедура ЗаписатьПадарасаНаСервере(НачалоПередачи, КонецПередачи) КонецПередачи = ТекущаяУниверсальнаяДатаВМиллисекундах(); Время = (КонецПередачи - НачалоПередачи)/1000; Сообщить("Время передачи данных на сервер: " + Время); Начало = ТекущаяУниверсальнаяДатаВМиллисекундах(); ДокОбъект = ДанныеФормыВЗначение(Объект,Тип("ДокументОбъект.ЗП_НачислениеЗарплаты")); Конец = ТекущаяУниверсальнаяДатаВМиллисекундах(); ВремяОтправки = (Конец - Начало) / 1000; Начало = ТекущаяУниверсальнаяДатаВМиллисекундах(); ДокОбъект.Записать(РежимЗаписиДокумента.Запись); Конец = ТекущаяУниверсальнаяДатаВМиллисекундах(); ВремяЗаписи = (Конец - Начало) / 1000; Начало = ТекущаяУниверсальнаяДатаВМиллисекундах(); ЗначениеВДанныеФормы(ДокОбъект,Объект); Конец = ТекущаяУниверсальнаяДатаВМиллисекундах(); Времявозврата = (Конец - Начало) / 1000; Сообщить("Время преобразования в объект: " + ВремяОтправки + Символы.ПС + "Время записи: " + ВремяЗаписи + Символы.ПС + "Время преобразования из объекта: " + Времявозврата ); Модифицированность = Ложь; НачалоПередачи = ТекущаяУниверсальнаяДатаВМиллисекундах(); КонецПроцедуры &НаКлиенте Процедура ЗаписатьПадараса(Команда) Начало = ТекущаяУниверсальнаяДатаВМиллисекундах(); НачалоПередачи = Начало; КонецПередачи = Неопределено; ЗаписатьПадарасаНаСервере(НачалоПередачи,КонецПередачи); КонецПередачи = ТекущаяУниверсальнаяДатаВМиллисекундах(); ВремяВозврата = (КонецПередачи - НачалоПередачи) / 1000; Сообщить("Время возврата с сервера: " + Времявозврата); Конец = ТекущаяУниверсальнаяДатаВМиллисекундах(); Времявозврата = (Конец - Начало) / 1000; Сообщить("Общее время выполнения: " + Времявозврата); КонецПроцедуры |
|||
41
Georg_QQ
20.03.18
✎
16:39
|
Так как побороть такие задержки. 30-40 сек без сжатия терпимо, но тоже как-то ни разу не весело.
|
|||
42
lodger
20.03.18
✎
17:29
|
(39) вы превратно поняли вопрос. вернитесь в реальное применение формы документа.
|
|||
43
Georg_QQ
21.03.18
✎
12:55
|
(42) не понял что вы имеете ввиду
|
|||
44
H A D G E H O G s
21.03.18
✎
12:58
|
А можно выгрузку базы? Вот не верю я, что такие задержки есть.
|
|||
45
H A D G E H O G s
21.03.18
✎
12:58
|
Вернее, что проблема в сжатии и коде.
|
|||
46
H A D G E H O G s
21.03.18
✎
12:58
|
Можно на [email protected]
|
|||
47
Georg_QQ
23.03.18
✎
14:25
|
(46) ушло на почту [email protected] с результатами еще одного теста на другом железе
(5) правка. разницы между 1 пользователем и 800+ - есть. Но появляется только после перезапуска сервера предприятия (не ос, рестарт службы). при 1 пользователе в сети имеем ~15 сек без сжатия, ~30 сек со сжатием. |
|||
48
H A D G E H O G s
23.03.18
✎
14:27
|
(47) Сейчас посмотрим
|
|||
49
H A D G E H O G s
23.03.18
✎
15:28
|
(47) Мои замеры
29,184 секунд с усиленным (от 1С) сжатием. 15,179 секунд - без сжатия. 15,180 секунд - с сжатием deflate. |
|||
50
H A D G E H O G s
23.03.18
✎
15:29
|
8.3.10
i5-3450s, все на одной машине. |
|||
51
H A D G E H O G s
23.03.18
✎
15:29
|
Надо еще трафик померять
|
|||
52
H A D G E H O G s
23.03.18
✎
15:30
|
И усреднить показания 10 прогонами
|
|||
53
H A D G E H O G s
23.03.18
✎
15:34
|
Как всегда - все упирается в ядро проца. 25% загрузки ровно - то клиент 1сv8c, то сервер rphost
|
|||
54
H A D G E H O G s
23.03.18
✎
15:57
|
10 проходов
Общее время выполнения (Без сжатия): 160,375 Общее время выполнения (deflate): 157,715 Общее время выполнения (SDC): 248,361 |
|||
55
H A D G E H O G s
23.03.18
✎
16:24
|
Без сжатия - 1 проход - 17182 Кб трафика
deflate - 1 проход - 392 Кб трафика SDC - 1 проход - 345 Кб трафика |
|||
56
H A D G E H O G s
23.03.18
✎
16:25
|
Такой мощный коэффициент сжатия объясняется дублирующимися данными у автора.
|
|||
57
H A D G E H O G s
23.03.18
✎
16:32
|
Но все равно, SDC, хоть и жмет лучше (не критично), но работает дольше раза в полтора.
А теперь посмотрим на цифры. 160 секунд у нас идет сериализация, чистая. Значит, в случае типового сжатия, 248-160 секунд у нас идет тупо сжатие, которое можно заменить почти нулевым deflate-ом с небольшими потерями в трафике, для локальных сетей ненапряжными. Я бы сказал, что потеря 12% трафика актуальна, ну я не знаю, в GPRS-е, наверное. Таким образом замена типового сжатия на deflate даст 35% выигрыша на клиент-серверный обмен. Еще бы получить подтверждаемость от других участников и опровержения :-) |
|||
58
H A D G E H O G s
23.03.18
✎
16:33
|
", но работает дольше раза в полтора. "
Не в полтора раза (50%), а на 35%, если я верно посчитал. |
|||
59
H A D G E H O G s
23.03.18
✎
16:33
|
Еще можно потестировать на недублирующихся данных.
|
|||
60
Georg_QQ
24.03.18
✎
06:11
|
(59) ну и я о том же) написал в суппорт 1с вопрос есть ли возможность переопределить параметры сжатия при подключении к серверу по умолчанию, со стороны сервера, или они заданы только в клиентской части. На других форумах говорят что это клиентская часть запрашивает работу со сжатием по умолчанию и со стороны сервера не переопределить.
|
|||
61
Georg_QQ
06.04.18
✎
14:29
|
(26) никакой вариант не работает. для web система просто игнорирует этот параметр
|
|||
62
Georg_QQ
06.04.18
✎
14:32
|
(60) со стороны сервера штатно отключить не получится, нет такой возможности. но как решение для конкретной конфигурации - проверять строку подключения и перезапускать сеанс если нет параметра отключающего сжатие с добавлением этого параметра.
|
|||
63
Вафель
06.04.18
✎
14:51
|
Разве галочка "Испольлзовать всегда" не убирает только НЕВИДИМЫЕ реквизиты?
|
|||
64
Fragster
гуру
06.04.18
✎
22:51
|
(61) вряд ли в веб не дефлэйт/гзип, а поделка 1с на js
|
|||
65
Aleksey
06.04.18
✎
22:55
|
(57) ну так а что запустить то надо
|
|||
66
Провинциальный 1сник
07.04.18
✎
04:37
|
(64) К веб-серверу может подключаться тонкий клиент, и в нём можно задать сжатие. В отличие от браузера.
|
|||
67
Fragster
гуру
08.04.18
✎
19:13
|
(66) запросто. Для файрфокса: заходишь в about:config, ищешь параметр network.http.accept-encoding;gzip, deflate, очищаешь. Всё, сжатие между сервером и браузером пропало. Далее только если реализована кривая и тормозная поделка на js.
|
|||
68
Fragster
гуру
08.04.18
✎
19:15
|
ну, или конкретно применительно к 1с, можно добавлять параметры командной строки в ссылку с базой, примерно так:
http://сервер/путь/к/базе/?L=ru&VL=ru_RU |
|||
69
0xFFFFFF
08.04.18
✎
20:56
|
Что это за файлы? Видеоролики?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |