|
Эффективность фоновых заданий | ☑ | ||
---|---|---|---|---|
0
Fragster
гуру
28.08.12
✎
18:51
|
Кто-нибудь проводил исследования на тему ускорения неблокирующихся действий через фоновые задания?
Что-то у меня такой код: Для каждого МетаИмя Из МассивИменРегистров Цикл Если УдалятьДвиженияВФоне Тогда МассивПараметров = Новый Массив(); МассивПараметров.Добавить(МассивРегистраторов); МассивПараметров.Добавить(МетаИмя); МассивФоновых.Добавить (ФоновыеЗадания.Выполнить ("омФоновыеЗадания.УдалитьНаборыЗаписей", МассивПараметров) ); Иначе омФоновыеЗадания.УдалитьНаборЗаписей(МассивРегистраторов, МетаИмя); КонецЕсли; КонецЦикла; Если УдалятьДвиженияВФоне Тогда ФоновыеЗадания.ОжидатьЗавершения(МассивФоновых); КонецЕсли; На фоновыеЗадания.ОжидатьЗавершения() тупит настолько, что эффективности от их использования нет вообще. Причем судя по консоли заданий в параллельном сеансе - фоновые задания выполняются за секунд 10-15, а потом еще минуту что-то происходит, что ОжидаетЗавершения(с 1с). Есть ли способ сделать так, чтобы Оно быстрее понимало, что все задания завершились? |
|||
1
H A D G E H O G s
28.08.12
✎
18:56
|
Так.
Движуху по каждому регистру удаляешь в отдельном потоке? |
|||
2
H A D G E H O G s
28.08.12
✎
18:56
|
Ты крут!
|
|||
3
Fragster
гуру
28.08.12
✎
19:00
|
(2) вопрос, почему параллельно медленнее, чем последовательно (сервак вроде тянет 100+ юзеров нормально, сейчас на нем тихо)
|
|||
4
H A D G E H O G s
28.08.12
✎
19:03
|
(3) Не пробовал.
Эххх, времени нет затестить. Офигительная идея, если что. |
|||
5
H A D G E H O G s
28.08.12
✎
19:04
|
(3) Может там табличка какая лочиться при удалении, которая всем нужна?
|
|||
6
Fragster
гуру
28.08.12
✎
19:07
|
(5) да нет, именно время от окончания всех заданий (смотрю в параллельном сеансе) до момента перескока на следующую строку после ОжидатьЗавершения()
|
|||
7
pumbaEO
28.08.12
✎
19:13
|
а как смотришь? По журналу регистрации? Если честно не замечал такого. Хотя у меня в основном все задания успевают завершится до ОжидатьЗавершения()
|
|||
8
Fragster
гуру
28.08.12
✎
19:15
|
(7) смотрю время завершения в консоли заданий (визуально совпадает с пропаданием соединения из консоли кластера) + время завершения ОжидатьЗавершения(). Время с сервером синхронизировано.
Так вот, после этого пропадания еще происходит ожидание непонятное |
|||
9
Fragster
гуру
28.08.12
✎
19:26
|
хотя интересно, что если фоновые задания занимают больше 10 секунд (на большой порции), то эта задержка почти пропадает (не до 15 секунд, а 2-3 становится).
|
|||
10
H A D G E H O G s
28.08.12
✎
19:27
|
Может 1С по таймеру опрашивает?
|
|||
11
H A D G E H O G s
28.08.12
✎
19:27
|
С большим интервалом.
|
|||
12
Fragster
гуру
28.08.12
✎
19:29
|
вот это может быть. но вариант с опросом каждого задания в цикле счастья не принес, равно как и через обработку ожидания
|
|||
13
H A D G E H O G s
28.08.12
✎
19:31
|
Старый добрый WaitForMultipleObjects() в исполнении 1С вышел не айс.
|
|||
14
Fragster
гуру
28.08.12
✎
19:37
|
кому не впадлу, на 8.2 проведите эксперимент из сабжа на кроликах
|
|||
15
pumbaEO
28.08.12
✎
19:39
|
http://screencast.com/t/M5rWOjTqAvvJ - провел эксперемент, но только на проведении документов.
|
|||
16
Fragster
гуру
28.08.12
✎
19:40
|
время переходить на 8.2 походу
|
|||
17
Fragster
гуру
28.08.12
✎
19:45
|
хотя пока на 500 наборах в среднем на 20-25% параллельное удаление дает прирост даже на 8.1
|
|||
18
Fragster
гуру
28.08.12
✎
19:46
|
(15) не на файловой, надеюсь?
|
|||
19
МуМу
28.08.12
✎
19:48
|
Все зависит от специфики.Мы например применяли фоновые задачи для ускорения процессов.Нужно не забывать о том что у фоновых задач есть издержки. Время отклика явно ождиает быть лучшим. Поэтому если требуется частое переключения от фоновой задачи к другой задаче - вряд ли будет хороший эффект. Ну а в контексте поставленной задачи скорее всего нужно смотреть на индексы. Возможно возникают страничные блокировки.
|
|||
20
Fragster
гуру
28.08.12
✎
19:50
|
(19) там идет работа с разными таблицами, а не диапазонами одной таблицы, блокировок нет
|
|||
21
pumbaEO
28.08.12
✎
19:51
|
(18) нет.
Сейчас еще разок проверил, фоновое длится 17 сек, ожидать завершения в пределах секунды. (милисекунды не смотрел). |
|||
22
МуМу
28.08.12
✎
19:54
|
(20) Включал профайлер? Диск не является узким местом? Сколько процесссоров на сервере СУБД? Сервер приложений не является узким местом? Вообщем чудес не бывает. Если все нормально сделано то ускорение должно быть. Бывают случаи когда ускоряется более 10-и раз.
|
|||
23
pumbaEO
28.08.12
✎
19:57
|
Но может мой случай непоказателен, т.к. это тестовый сервак и фоновых заданий в один момент времени выполняется ну максимум 2...
|
|||
24
Fragster
гуру
28.08.12
✎
20:15
|
по перфмону - узкое место - это процессор на сервере 1ски, на скулевом сервере нагрузка по нулям, диски везде дремлют. хот странно, ведь мои действия наоборот дергать больеш диски должны
|
|||
25
Fragster
гуру
29.08.12
✎
17:40
|
Возвращаемся к фоновым заданиям.
Покурил Книга знаний: Асинхронные вычисления без «заморозки» формы (на фоновых заданиях) Способ остроумный, он при "выполнении" фонового задания метод ФоновыеЗадания.ОжидатьЗавершения(МассивФоновых) падает, приходится определять, какие задания "завершились" и перезапускать ожидание для остальных в цикле. Может есть способ возврата значения проще? |
|||
26
Nexux
29.08.12
✎
18:08
|
в 8.2 может в форму вернуть
|
|||
27
Nexux
29.08.12
✎
18:11
|
в качестве параметра рег. задания надо передать адрес временного хранилища на основе идентфикатора формы
|
|||
28
Fragster
гуру
29.08.12
✎
18:12
|
эх, до 8.2 еще пока далеко
|
|||
29
Nexux
29.08.12
✎
18:13
|
в 8.1 не делал такое(
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |