8 октября 2010 г.

Процессы SAP, ORACLE, HP-UX


Сегодня поговорим о рабочих процессах системы SAP. Основными "пчелками" в ABAP-части системы являются рабочие процессы, которые исполняют ABAP-код программы, запускаемой пользователем, осуществляют печать из системы, обновление данных в базе данных и т.д. Выделяют следующие типы процессов:
  • DIA - диалоговые процессы, которые выделяются для работы пользователей с системой в режиме диалога;
  • BTC - фоновые процессы, которые обрабатывают запланированные фоновые задания системы и пользователей;
  • ENQ - процесс блокировки, всегда один и всегда на центральной инстанции;
  • UPD(VB), UP2 - процессы обновления данных в базе данных;
  • SPO - процессы спула, которые обрабатывают запросы на печать.
Количество тех или иных процессов задается параметрами в профиле инстанции. Посмотреть что и в каком количестве сконфигурировано в системе можно в транзакции SM50. У "пчелок" есть "матка" - диспетчер. Данный процесс системы организует очередь к рабочим процессам, раздает им задания, управляет их запуском и остановкой. Рабочие процессы являются дочерними процессами родительского процесса диспетчера на уровне ОС Unix. Таким образом, стоит понимать, что рабочий процесс системы SAP это отдельный процесс на уровне ОС. Каждому рабочему процессу SAP соответствует shadow-процесс ORACLE, который в свою очередь представляет отдельный процесс на уровне ОС Unix (на платформе Windows ситуация несколько иная).
Любой процесс требует определенный набор ресурсов (оперативная память, такты процессора, место в таблице процессов и т.д.). Поэтому держать неограниченное количество процессов, что со стороны SAP, что со стороны ORACLE или UNIX, не целесообразно. Есть определенный ряд параметров, которые ограничивают количество процессов, прежде всего максимальное. И чтобы SAP, ORACLE и UNIX не вели себя как лебедь, рак и щука, необходимо учитывать эти параметры и согласовывать между собой их значения.
И так, есть общее количество рабочих процессов системы SAP. При этом, если установлены дополнительные сервера приложений, то количество рабочих процессов дополнительных серверов приложений надо учитывать. Количество рабочих процессов SAP задаётся параметрами rdisp/wp_no_* в профиле инстанции системы. В профайле ORACLE (init<SID>.ora) есть 2 параметра: PROCESSES и SESSIONS.
Формулы расчета можно найти в SAP note # 384839 (пункт 2)(для ORACLE версий 8i и 9i) или SAP note # 830576 (для ORACLE версий 10i). В наиболее общем виде формулы выглядят так:
  • PROCESSES = #ABAP work processes * 2 + #J2EE server processes * <max-connections> + PARALLEL_MAX_SERVERS + 40
  • SESSIONS = 2 * PROCESSES
Если установлена только ABAP-часть, то формула очень проста - удвоенное количество рабочих процессов SAP плюс запас для служебных процессов ORACLE. Например, в системе сконфигурировано 50 рабочих процессов SAP, следовательно, надо выставить PROCESSES = 140, SESSIONS = 280.
На уровне HP-UX есть параметр ядра nfile. Этот параметр задается формулой, которая зависит от параметров nproc и max_users. Если в системе много процессов ORACLE, которые работают с большой базой данных (состоящей из большого количества дата файлов), то можно "схлопотать" ошибку ОС:
Error: 23: File table overflow
Чтобы такого "безобразия" не было. Необходимо чтобы параметр nfile удовлетворял условию:
  • nfile > #File descriptors = #Data files * PROCESSES
Для подробной информации стоит заглянуть в SAP notes # 546006 и # 172747. Для установки параметра в HP-UX используйте команду kmtune (kctune) или SAM.

Вышесказанное поможет добавить дополнительный сервер приложений, дополнительные рабочие процессы в систему SAP и при этом согласовать работу базы данных ORACLE и ОС HP-UX, не получив лишних проблем. ;)

А еще у меня есть вопрос знатокам. ;) Почему в формуле расчета параметра PROCESSES для ORACLE количество рабочих процессов SAP умножается на 2? В документации говорится, что одному рабочему процессу SAP соответствует один рабочий процесс ORACLE. Зачем брать ИМЕННО двойное количество. Кто знает - отпишитесь в комментариях. Очень интересно. :)

Автор: Шиболов Вячеслав Анатольевич


2 комментария:

  1. Добрый день,

    Дело в том, что при соединении с БД создаётся несколько сессий для одного рабочего процесса со стороны SAP. Это даёт определённые преимущества в производительности.

    ОтветитьУдалить
    Ответы
    1. Альберт, добрый день!

      Спасибо за комментарий.
      А есть где подробнее про это почитать?

      Удалить