Почему фоновые задачи так тормозят? #690391


#0 by Chai Nic
Пробую перевести файловую БП3 на клиент-сервер. В клиент-сервере, как известно, для выполнения стандартных отчетов и регламентных процедур закрытия месяца _безальтернативно_ используется механизм фоновых заданий. С одной стороны, это плюс - позволяет во время формирования отчета пользователю делать что-то еще, но есть одно НО - огромный оверхед по времени выполнения при использовании этого механизма. Так, оборотно-сальдовая ведомость, которая формируется за секунду в файловом режиме, в режиме отложенного выполнения заданий формируется порядка 8 секунд. И проблема тут не собственно в клиент-сервере. Попробовал "обмануть" конфигурацию, заставив её подумать, что она работает на файловой версии (добавил в начало функции ОбщегоНазначения.ИнформационнаяБазаФайловая строчку Возврат Истина;) - в этом случае отчет выполняется на sql-базе так же быстро, как и в файловой. Вопрос. Почему такие задержки при использовании фоновых заданий?
#1 by Chai Nic
Попробовал в виде эксперимента подкрутить в конфигурации тайминги опроса фонового задания, в ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания и в ДлительныеОперации.ЗапуститьВыполнениеВФоне указал 0.1 секунду без последующего увеличения - резко выросло количество вызовов сервера, однако скорость формирования не изменилась... странно как-то. На что тратится время?
#2 by МихаилМ
что собщает замер производительности ?
#3 by France
время тратится на ожидание выделения процессорного времени ОС..
#4 by Chai Nic
Процессорного времени ОС в избытке и на сервере и на клиенте. Или вы имеете в виду, что 1с запускает для каждого фонового задания отдельный процесс? Неужели так всё плохо?
#5 by Chai Nic
Замер производительности по серверному коду не могу пока сделать - на сервере не включена отладка, а перезапускать его в рабочее время нельзя. А в отладчике, подключенном к клиенту ничего интересного - там доли секунды тратятся...
#6 by banco
сколько процессов на сервере 1С?
#7 by Chai Nic
8 рабочих процессов (по количеству ядер). Загруженность сервера близка к нулю.
#8 by banco
оставь 1 процесс
#9 by Chai Nic
Сервер 1с 32-битный, один процесс может упереться в нехватку адресного пространства... Но в виде эксперимента попробую вечером. Сомневаюсь, что это как-то повлияет.
#10 by banco
да, плохо что 32-битный, но, помню, у одного клиента помогло
#11 by Живой Ископаемый
а если процесс фоновых заданий вынести в отдельный менеджер?
#12 by Chai Nic
Попробовал всем процессам, кроме одного, поставить "Не использовать", пока не удаляя их - скорость инициализации фоновых задач резко выросла. Теперь 2 секунды вместо 8. Спасибо за подсказку.. не ожидал от 1с такой подлянки.
#13 by kiruha
Поставь разрешить отладку на сервере И в конфигураторе Отладка Подключение автоматическое подключение фоновые Сделай замер Но вообще не понятно зачем нужно ускорять фоновые ?
#14 by kiruha
Верни назад, не нужно ускорять иниц фоновых
#15 by Живой Ископаемый
он же написал зачем, чтобы не ждать оборотку по 8 секунд, а ждать по 2.
#16 by H A D G E H O G s
Ну может 1С решает, какому процессу отдать выполнение фонового.
#17 by kiruha
Ну ну удачи ему в его экспериментах Про параллельность и приоритеты я так понимаю пофиг
#18 by Chai Nic
Если бухгалтер запустил формироваться ОСВ - он будет ждать, пока она сформируется.. ему параллельность нафиг не нужна, ему важнее реактивность интерфейса
#19 by kiruha
А зачем в фоне делаешь ?
#20 by Chai Nic
Мне незачем. Просто 1с выбора не оставляет: любой стандартный отчет БП3 формируется в фоновом режиме, если конфигурация запущена на клиент-сервере. Так задумано в 1с.
#21 by Живой Ископаемый
писатель
#22 by kiruha
И там одну строку переписать ?
#23 by Chai Nic
И это будет уже не типовая, а так да..
#24 by Chai Nic
"Ну может 1С решает, какому процессу отдать выполнение фонового" Уж слишком она задумчива в этом самом месте. Чтобы выбрать один из 8 - тратит не менее 5 секунд. Она на счетах что ли считает?)
#25 by Fragster
а сколько запускается пустое фоновое задание?
#26 by Fragster
просто тупо через менеджер фоновых + ожидать завершения на пустую функцию?
#27 by kiruha
Или отчет на СКД самый примитивный типа Выбрать элемент справочника с отбором по коду
#28 by Chai Nic
Попробовал с предопределенным заданием "Обмен сообщениями по учетным записям документооборота", поскольку сообщений никаких нет - на одном РП выполняется моментально (менее секунды), на более чем одном (проверял от 2 до 12) - задержка 8 секунд. В общем вывод такой - тормоза при использовании нескольких рабочих процессов, причем нет ощутимой зависимости от количества РП больше одного.
#29 by Никола_Питерский
Так уже давно грят что чем меньше процессов тем лучше ?
#30 by Chai Nic
Спорный вопрос. Как один рпхост сможет использовать возможности многопроцессорного сервера?
#31 by Fragster
может
#32 by kiruha
Осталось проверить то же самое для 100 юзверей
#33 by Chai Nic
В любом случае баг с тормозами запуска ФЗ при нескольких РП остается багом. 8 секунд плюсом на запуск - они не лишние при сколь угодно большом количестве пользователей..
#34 by kiruha
Вот представь - что кроме того что выполнить задачу нужно породить задание, определить нагрузку подчиненных, расчитать приоритеты, выделить ресурсы, согласовать параллельное получение данных и т.д. и только потом выполнить задачу Что быстрее ?
#35 by Chai Nic
Это лишь слова. А на деле - задача сводится к выбору одного наименее нагруженного процесса. Тратить на это несколько реальных секунд на современном сервере по меньшей мере неразумно.
#36 by Chai Nic
Кстати, говорят в 8.3 вообще убрали возможность добавлять рабочие процессы.. видать неспроста
#37 by Живой Ископаемый
неявно - можно. можно сказать что два пользователя на один рабочий процес, или 1 база
#38 by Никола_Питерский
Ну исходников 1Сного сервера мы не имеем и по этому как они там реализовали работу всей этой кухни понятия не имею ! Но 1С любит экспериментировать, это факт !
#39 by kiruha
Как написали ниже кухни мы не знаем. Может там идет инициализация которая потом исчезнет. Опять же большое количество данных между процесссами перекидывается не мгновенно
#40 by kiruha
Вообщем проведи тест на 100 чел для вывода
#41 by Леха Дум
багоискаители :), там обработчик ожидания опрашивает фоновые задания на предмет выполнение с определенной периодичностью :)
#42 by Fragster
я у автора спросил за что-то типа Задание = ФоновыеЗадания.Выполнить("ФоновыеФункции.ФоноваяКалибровка"); и обработчик ожидания тут не причем
#43 by Жан Пердежон
лишь бы ляпнуть
#44 by Леха Дум
модуль ДлительныеОперации ВЫЗОВ: в общей форме "ФормаОтчета", процедура Функция ОтчетСкомпоноватьРезультатНаСервере(ВФоновомЗадании) ........... ........... Попытка                 ПараметрыФормированияОтчета,                 НСтр("ru = 'Варианты отчетов: Формирование отчета'")             ); ПРОВЕРКА: иногда лучше промолчать
#45 by Жан Пердежон
ну скопипасти сюда пару модулей, их ведь ни у кого нет и никто, кроме тебя ни разу не видел. Что сказать-то хотел?
#46 by Chai Nic
Еще в я завышенные тайминги в конфигурации исключил, тем более, что налицо зависимость именно от количества рабочих процессов..
#47 by Леха Дум
время действительно может тратиться на системный опрос всех процессов, где выполняются фоновые задания. Кроме того, похоже системе приходится собирать информацию из данных по уже отработанным фоновым заданиям - тоже время. всю ветку от корки до корки не прочитаешь
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С