|   |   | 
| 
 | Медленно отрабатывает обработка на клиент серверной базе | ☑ | ||
|---|---|---|---|---|
| 0
    
        ultrannge89 16.10.14✎ 07:29 | 
        В общем обработка довольно простая, для изменения реквизитов в справочниках, нахожу документы использующие эти справочники и распровожу их, меняю реквизит у справочника и снова провожу... На файловой базе отрабатывает 200 документов за 5 секунд, на серверной за 3-5 минут, при том что на серверной кроме меня в базе никого нет, конечно сервак не зверь, но и думаю проблема не в железе... В чем может быть косяк?     | |||
| 1
    
        Sasha_Rapira 16.10.14✎ 07:32 | 
        1) Файловый режим при 1 пользователе, работает быстрее клиент-северного режима при 1 пользователе
 2) см. регл. и фоновые задачи | |||
| 2
    
        Мимохожий Однако 16.10.14✎ 07:34 | 
        Делай замеры - узнаешь, где тормоза. Обычно и косяк там же, где большие интервалы.     | |||
| 3
    
        ultrannge89 16.10.14✎ 07:34 | 
        Да там база 1Гб, регламентированных задач нет, обмены в ручную... Я понимаю что серверная медленнее, но не в 30 раз же?     | |||
| 4
    
        Sasha_Rapira 16.10.14✎ 07:36 | 
        (3) между файловое и клиент-сервер всё одинаково? Пользователь тот-же самый? Как вариант замер производительности покажет долгое место     | |||
| 5
    
        ultrannge89 16.10.14✎ 07:37 | 
        Вот код:
 ИсходноеЗначениеСпр = Справочники.бит_стр_ТипДоговораРеализацииНедвижимости.НайтиПоНаименованию("Договор инвестирования (ДДУ)"); КонечноеЗначениеСпр = Справочники.бит_стр_ТипДоговораРеализацииНедвижимости.НайтиПоНаименованию("Договор инвестирования"); Контрагенты = ЭлементыФормы.СписокКонтрагентов.Значение; Если Контрагенты.Количество() > 0 Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | бит_стр_ДоговорИнвестированияДолевогоУчастия.Ссылка КАК ДоговорИнвестирования, | бит_стр_ДоговорИнвестированияДолевогоУчастия.ВидОперации |ИЗ | Документ.бит_стр_ДоговорИнвестированияДолевогоУчастия КАК бит_стр_ДоговорИнвестированияДолевогоУчастия |ГДЕ | бит_стр_ДоговорИнвестированияДолевогоУчастия.Проведен = ИСТИНА | И бит_стр_ДоговорИнвестированияДолевогоУчастия.Контрагент В(&Контрагенты) | И бит_стр_ДоговорИнвестированияДолевогоУчастия.ДоговорКонтрагента.бит_стр_ТипДоговораРеализацииНедвижимости = &ИсходноеЗначениеСпр | И бит_стр_ДоговорИнвестированияДолевогоУчастия.ВидОперации = ЗНАЧЕНИЕ(Перечисление.бит_стр_ВидыОперацииДоговораИнвестирования.Заключение) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | бит_стр_ДоговорИнвестированияДолевогоУчастия.Ссылка, | бит_стр_ДоговорИнвестированияДолевогоУчастия.ВидОперации |ИЗ | Документ.бит_стр_ДоговорИнвестированияДолевогоУчастия КАК бит_стр_ДоговорИнвестированияДолевогоУчастия |ГДЕ | бит_стр_ДоговорИнвестированияДолевогоУчастия.Проведен = ИСТИНА | И бит_стр_ДоговорИнвестированияДолевогоУчастия.Контрагент В(&Контрагенты) | И бит_стр_ДоговорИнвестированияДолевогоУчастия.ДоговорКонтрагента.бит_стр_ТипДоговораРеализацииНедвижимости = &ИсходноеЗначениеСпр | И бит_стр_ДоговорИнвестированияДолевогоУчастия.ВидОперации = ЗНАЧЕНИЕ(Перечисление.бит_стр_ВидыОперацииДоговораИнвестирования.ИзменениеУсловий) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | бит_стр_ДоговорИнвестированияДолевогоУчастия.ДоговорКонтрагента |ИЗ | Документ.бит_стр_ДоговорИнвестированияДолевогоУчастия КАК бит_стр_ДоговорИнвестированияДолевогоУчастия |ГДЕ | бит_стр_ДоговорИнвестированияДолевогоУчастия.Проведен = ИСТИНА | И бит_стр_ДоговорИнвестированияДолевогоУчастия.Контрагент В(&Контрагенты) | И бит_стр_ДоговорИнвестированияДолевогоУчастия.ДоговорКонтрагента.бит_стр_ТипДоговораРеализацииНедвижимости = &ИсходноеЗначениеСпр | |СГРУППИРОВАТЬ ПО | бит_стр_ДоговорИнвестированияДолевогоУчастия.ДоговорКонтрагента"; Запрос.УстановитьПараметр("Контрагенты", Контрагенты); Запрос.УстановитьПараметр("ИсходноеЗначениеСпр", ИсходноеЗначениеСпр); МассивРезультатов = Запрос.ВыполнитьПакет(); Попытка НачатьТранзакцию(); ВыборкаСписокДокументов = МассивРезультатов[0].Выбрать(); Проверка1 = МассивРезультатов[0].Выгрузить(); ЭлементыФормы.НадписьИндикации.Значение = "Снятие с проведения документов"; Пока ВыборкаСписокДокументов.Следующий() Цикл ДоговорИнвестирования = ВыборкаСписокДокументов.ДоговорИнвестирования.ПолучитьОбъект(); ДоговорИнвестирования.Проведен = Ложь; ДоговорИнвестирования.Записать(РежимЗаписиДокумента.ОтменаПроведения); КонецЦикла; ЭлементыФормы.НадписьИндикации.Значение = "Изменение вида договора в договорах контрагентов"; ВыбораДоговораКонтрагентов = МассивРезультатов[1].Выбрать(); Проверка2 = МассивРезультатов[1].Выгрузить(); Пока ВыбораДоговораКонтрагентов.Следующий() Цикл ДоговорКонтагента = ВыбораДоговораКонтрагентов.ДоговорКонтрагента.ПолучитьОбъект(); ДоговорКонтагента.бит_стр_ТипДоговораРеализацииНедвижимости = КонечноеЗначениеСпр; ДоговорКонтагента.Записать(); КонецЦикла; ВыборкаСписокДокументов.Сбросить(); ЭлементыФормы.НадписьИндикации.Значение = "Проведение документов"; Пока ВыборкаСписокДокументов.Следующий() Цикл ДоговорИнвестирования = ВыборкаСписокДокументов.ДоговорИнвестирования.ПолучитьОбъект(); ПолучитьСтруктуруСчетовЦелевогоФинансированияПоДоговоруИОбновитьСчета(ДоговорИнвестирования, ДоговорИнвестирования.ДоговорКонтрагента); ДоговорИнвестирования.Проведен = Истина; ДоговорИнвестирования.Записать(РежимЗаписиДокумента.Проведение); КонецЦикла; //ОтменитьТранзакцию(); ЗафиксироватьТранзакцию(); ЭлементыФормы.НадписьИндикации.Значение = ""; Сообщить("Выполнено!"); Исключение ОтменитьТранзакцию(); Сообщить("Транзакция отменена"); КонецПопытки; КонецЕсли; | |||
| 6
    
        ultrannge89 16.10.14✎ 07:41 | 
        Делал я ее на клиент серверной и проверял тоже, выполнялась по 3-4 минуты, затем закинул на рабочую в файловой, стала за 3-5 сек выполняться...     | |||
| 7
    
        ultrannge89 16.10.14✎ 07:47 | 
        Просто сейчас сервак на sql используется только мной для теста, но в будущем будет переход с файловой на серверную и не хотелось бы чтобы они потом говорили что я им всю работу испортил, что у них теперь документы по часу перепроводятся...
 Windows server 2008 r2, Intel Xeon E5607 2.27 Ghz (2 процессора), 12 Gb RAM, SAS Raid 10 level 1.8 Tb Выделил скулю 4 Гб озу. Может быть в нем надо что-то настроить? У 1с сервера тоже никаких настроек не делал, т.к. пока мало ОЗУ. | |||
| 8
    
        ultrannge89 16.10.14✎ 08:06 | 
        Вот топ:
 ОбщийМодуль.ОбщегоНазначения.Модуль 3 682 Набор.Записать(); 1 464 62,892402 27,92 ОбщийМодуль.ОбщегоНазначения.Модуль 4 406 Выборка = Запрос.Выполнить().Выбрать(); 1 098 29,560968 13,12 Форма.Форма.Форма 72 ДоговорИнвестирования.Записать(РежимЗаписиДокумента.Проведение); 183 17,955352 7,97 ОбщийМодуль.ОбщегоНазначения.Модуль 4 472 Запрос.Выполнить(); 549 13,323934 5,92 | |||
| 9
    
        ultrannge89 16.10.14✎ 08:06 | 
        Предпоследняя запись это время...     | |||
| 10
    
        Злобный монстр 16.10.14✎ 09:15 | 
        (9) Сколько одна транзакция объектов пишет? Если "многа тысяч" Поруби по частям фиксирование.     | |||
| 11
    
        Злобный монстр 16.10.14✎ 09:17 | 
        (10) + Ну в смысле не в одной гигантской транзакции все пиши. А в нескольких, например по 1000 записей.     | |||
| 12
    
        Зеленый пень 16.10.14✎ 09:35 | 
        Странно. Разница между файловой и серверной базой может быть в 5-10 раз, но не в 50.
 База какого размера? | |||
| 13
    
        YFedor 16.10.14✎ 09:39 | 
        УстановитьМонопольныйРежим(Истина) ?     | |||
| 14
    
        ultrannge89 16.10.14✎ 11:02 | 
        В транзакции 200 объектов распровожу, затем 200 изменяю и 200 провожу...
 Монопольного режима не устанавливаю... | |||
| 15
    
        ultrannge89 16.10.14✎ 11:04 | 
        База размером 1Гб. У меня даже конфигуратор открывается по несколько минут после выгрузки загрузки, есть ощущения что дело в неправильной настройки сервера... Сам по себе он слишком медленно выполняет многие действия.     | |||
| 16
    
        hhhh 16.10.14✎ 12:07 | 
        а здесь что?
 ПолучитьСтруктуруСчетовЦелевогоФинансированияПоДоговоруИОбновитьСчета(ДоговорИнвестирования, ДоговорИнвестирования.ДоговорКонтрагента); это в цикле. может оно тормозит? | |||
| 17
    
        H A D G E H O G s 16.10.14✎ 12:13 | 
        Зачем отменяем проведение?     | |||
| 18
    
        Fragster гуру 16.10.14✎ 12:22 | 
        в замере производительности стрелочка в последней колонке (переход на сервер) сколько раз видна, и сколько в колонке "количество" напротив нее?     | |||
| 19
    
        Fragster гуру 16.10.14✎ 12:23 | 
        (14) пусть транзакция по одной итерации будет. ну и (17) еще тоже.     | |||
| 20
    
        ultrannge89 16.10.14✎ 12:33 | 
        (16) Эта  функция как бы обновляет форму документа, подхватывая проводки из договора в зависимости от вида договора, это типовая функция...
 (17), а как мне изменить проводки у документа не отменяя проведение? логика такая: я нахожу нужные мне документы, отменяю проведение, меняю вид договора, обновляю проводки (счета) в документе и провожу... Можно было конечно в одном цикле это делать, но не охота было париться над 5 минутной задачкой... Наткнулся на статью http://курсы-по-1с.рф/articles/ускорить-1с-протокол-shared-memory/ Щас проверю как у меня настроена 1С, может проблемы в самом сервере, замер показывает что на серверном варианте та же самая операция выполняется в 30 - 40 раз дольше файловой. | |||
| 21
    
        ultrannge89 16.10.14✎ 12:42 | 
        1CV82 Server    Shared memory
 1CV82 Server Shared memory 1CV82 Server Shared memory 1CV82 Server Shared memory | |||
| 22
    
        H A D G E H O G s 16.10.14✎ 12:44 | 
        (21) Регламенты на SQL настроены, выполняютс?
 Конфа - типовая? | |||
| 23
    
        H A D G E H O G s 16.10.14✎ 12:44 | 
        А, стоп, вижу присутствие Бита.     | |||
| 24
    
        H A D G E H O G s 16.10.14✎ 12:45 | 
        Смотреть, какой регистр медленнее всего записывается, смотреть план запроса его записи, искать index scan     | |||
| 25
    
        Зеленый пень 16.10.14✎ 13:00 | 
        (24) Он выложил замер в (8), там 28% занимает самый тяжелый регистр, тут дело не в одном регистре.     | |||
| 26
    
        H A D G E H O G s 16.10.14✎ 13:13 | 
        (25) Даже не буду ничего комментировать.     | |||
| 27
    
        Fragster гуру 16.10.14✎ 13:44 | 
        а отладка на сервере включена вообще?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |