Текущее время: Вс, июл 27 2025, 23:21

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Разбиение на процессы
СообщениеДобавлено: Чт, ноя 25 2010, 18:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
VLAVLA написал:
Да, алгоритм такой - точно лучше сделать нельзя.

Это спорный вопрос :wink:

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбиение на процессы
СообщениеДобавлено: Чт, ноя 25 2010, 19:15 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Konstantin Anikeev написал:
А что такого если их выделить? У одного клиента в продуктиве кластер из 3 серверов по 60 диалоговых процессов на каждом. Вроде как сап помогал производительность настраивать.

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

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбиение на процессы
СообщениеДобавлено: Чт, ноя 25 2010, 20:23 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Удав написал(а):
Рекомендации SAP - одно процессорное ядро на один процесс. Интересно узнать стоимость этого решения :wink:

Стоимости я не знаю, но она точно немаленькая. В качестве серверов там стоят HP-шные многопроцессорные (если правильно помню 8 камней по 8 ядер) машинки, так что я думаю, что рекомендации SAP там приблизительно выполняются :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбиение на процессы
СообщениеДобавлено: Пт, ноя 26 2010, 09:29 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, янв 30 2007, 10:59
Сообщения: 61
Такие большие задачи желательно разбивать на две части. Первая - предварительная обработка - запускается по событиям при проводке документа и сохраняет промежуточные данные в пользовательских таблицах. Вторая - основная обработка - уже ночью в фоне. Получается как бы распределенная обработка в первой части, и за счет этого сокраащется время второй. Или можно использовать BW, если выходные данные - отчет.

_________________
Блаженны прыгающие, ибо они допрыгаются.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбиение на процессы
СообщениеДобавлено: Пт, ноя 26 2010, 11:31 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
SMak написал(а):
Или можно использовать BW, если выходные данные - отчет.

+1


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбиение на процессы
СообщениеДобавлено: Пн, ноя 29 2010, 11:24 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 13 2006, 16:44
Сообщения: 55
Пол: Мужской
Пример распараллеливания процессов обработки можно посмотреть в отчете RSPARAGEN.
Смысл в том, чтобы запускать заданное число параллельных процессов через STARTING NEW TASK и отслеживать их завершение, по завершению одного запускать следующий.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбиение на процессы
СообщениеДобавлено: Вт, ноя 30 2010, 15:04 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Могу предложить следующий механизм(с кодом если надо).
Диспетчер фоновых процессов - ФМ, которому на вход идут подготовленные данные для запуска программ в фоновом режиме(программа, вариант, таблица rsparams), список аппл.серверов с указанием числа одновременно работающих заданий. ФМ запускает разрешенное число заданий, и далее периодически проверяет, если процесс освободился, запускает следующую задачу. Можно управлять приоритетом и порядком выполнения заданий. Могу сказать, что метод очень действенный, более прозрачный чем call function startind new task или in background task.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбиение на процессы
СообщениеДобавлено: Ср, дек 01 2010, 16:22 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
__Gennady написал(а):
Могу предложить следующий механизм(с кодом если надо).
Диспетчер фоновых процессов - ФМ, которому на вход идут подготовленные данные для запуска программ в фоновом режиме(программа, вариант, таблица rsparams), список аппл.серверов с указанием числа одновременно работающих заданий. ФМ запускает разрешенное число заданий, и далее периодически проверяет, если процесс освободился, запускает следующую задачу. Можно управлять приоритетом и порядком выполнения заданий. Могу сказать, что метод очень действенный, более прозрачный чем call function startind new task или in background task.

Неплохо :)
Буду благодарен, если Вы им поделитесь.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбиение на процессы
СообщениеДобавлено: Ср, дек 01 2010, 16:56 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
__Gennady написал(а):
Диспетчер фоновых процессов ...
Могу сказать, что метод очень действенный, более прозрачный чем call function startind new task или in background task.

Можно пояснить, как происходит передача параметров и получение данных для фоновых задач?

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбиение на процессы
СообщениеДобавлено: Ср, дек 01 2010, 17:44 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Да, конечно можно.
Задача: обеспечить выполнение ресурсо- и время- ёмких задач за приемлемое время, обеспечить равномерную загрузку серверов.
Пример использования - ценнобразование в крупной торговой сети.
Реализация: делаем программу, позволяющую порождать фоновые задания по определенным правилам.
селекционный экран: ограничения по объектам сети(регионы, БЕ, магазины, и т.д.)
шаги:
Программа 1, вариант, доп. параметры
Программа 2, вариант, доп. параметры
Программа 3, вариант, доп. параметры
....
Варианты запуска
- на группу обработки, число одновременно работающих процессов
- с указанием конкретных серверов, число одновременно работающих процессов на сервере

Что происходит при запуске.
В случае с ценообразованием необходимо было сгруппировать магазины по регионам и для каждой такой группы запланировать последовательное выполнение программы1, программы2, программы3.. и тд.
собственно эти данные(vkorg, vtweg, werks, и т.д.) в конечном итоге должны попасть на вход команды submit,


CASE 'X'.
WHEN p_srv."с указанием конкретных серверов
CALL FUNCTION 'ZLO_SСHEDULE_START'
EXPORTING
i_shedule_data = lt_sсhedule_data
i_server_data = lt_server_data
i_wait = p_wait.
WHEN p_gr. "на группу обработки
CALL FUNCTION 'ZLO_SСHEDULE_START_GROUP'
EXPORTING
i_shedule_data = lt_sсhedule_data
i_server_group = p_group
i_num_process = p_num_p
i_wait = p_wait.
ENDCASE.


здесь lt_sсhedule_data:
PROGRAMM PROGRAMM программа которую необходимо запланировать
VARIANT VARIANT вариант(не обязательно)
SEL_OPTIONS TY_STANDARD_SEL параметры
JOB_NAME BTCJOB имя джоба
GROUP CHAR6 группа (в примере с ценообразованием это был регион)
LEVEL POSNR номер шага
START AS4FLAG служебн.
FINISH AS4FLAG служебн.

lt_server_data
SRVNAME BTCSRVNAME appl сервер
NUM_JOBS NUMC2 число заданий

дальше ФМ запускает положенное число заданий и каждые p_wait секунд проверяет, не закончилось ли какое-нибудь
если закончилось - подыскивает какое запустить следующим. (у меня приоритет был следующим - запускаются программы, в чьей группе(group) предыдущий шаг(level) завершен(или в случае первого уровня не запущен) ).



Похожим образом может быть решена задача массовой прокачки idoc движений материала.
Проблемы при использовании стандартного механизма распараллеливания - занимаются диалоговые процессы и что самое неприятное, idoc с одним магазином блокируют друг друга (для одинковых материалов, MARC).
Решение - выбрать idoc в нужном статусе, за нужные даты и т.д. разбить по заводам(у нас это можно определить из порта отправителя) сгруппировать внутри завода например по 5000 и подать на вход того же ФМ ZLO_SСHEDULE_START.

Аналогично у нас решена задача массового изменения материалов и многие другие.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбиение на процессы
СообщениеДобавлено: Чт, дек 02 2010, 09:44 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Ну это немного другое...При массовом изменении данных механизм фоновых задач действительно хорошо подходит.
Но при необходимости распараллелить вычисления в "тяжелом" отчете, особенно если этот отчет запускают с разными параметрами несколько пользователей встает задача корректного сбора данных от параллельных задач. В этом случае CALL TRANSATION ..STARTING NEW TASK ... PERFORMING ... подходит значительно лучше. При этом также есть возможность указания сервера приложений/группы серверов.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбиение на процессы
СообщениеДобавлено: Чт, дек 02 2010, 10:18 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Согласен, для отчетов использование aRFC будет удобнее.
Правда исходя из темы непонятно, отчет это или обработка.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбиение на процессы
СообщениеДобавлено: Вт, дек 07 2010, 10:17 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, фев 09 2006, 12:02
Сообщения: 462
Пол: Мужской
VLAVLA написал:
SMak написал(а):
А можно узнать причину разбиения на процессы. Ограничения по памяти? И какой объем данных должен получиться в результате выполнения программы? Я к тому, что может можно найти другое решение, зная проблему.


Проблема во времени, 200 000 записей будет отрабатываться 3-4 суток, а 3 000 сооветственно быстрее. Для этой цели даже выделят отдельный сервер.


Миллионы записей при достаточно сложном алгоритме обрабатываются часами, но никак не сутками. Железо у Вас вроде достаточно мощное. Странно это как-то. Если не секрет, расскажите вкратце какие операции выполняются над записями.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB