Настройка веб-приложений OpenEdge и MS-Agent
После завершения настройки PAS для обработки клиентских запросов можно приступить к работе с веб-приложениями OpenEdge и процессами MS-Agent. Далее представлена информация о следующих аспектах:
- Конфигурирование размера пула сеансов ABL в диспетчере сеансов ABL.
- Управление потреблением ресурсов в рамках многосессионного процесса агента.
- Контроль за одновременным выполнением запросов ABL.
- Настройка времени запуска PAS for OpenEdge.
Разработка и реализация приложения ABL оказывают влияние на PAS и все веб-приложения, функционирующие в его среде. В большинстве случаев модификация дизайна и реализации приложения ABL не требуется и не рекомендуется. Основная задача заключается в достижении баланса между временем запуска экземпляра OpenEdge, обработкой клиентских запросов к бизнес-логике ABL и обеспечением времени отклика для этих запросов.
Одним из ключевых аспектов оптимизации производительности экземпляра PAS for OpenEdge является понимание того, что веб-приложения OpenEdge и процессы MS-Agent, обрабатывающие клиентские запросы, регулируются настройками PAS, в котором они выполняются. Например, если OpenEdge настроен на обработку 400 одновременных клиентских запросов, но PAS поддерживает только 200 таких запросов, максимальная производительность системы будет ограничена 200 запросами.
Следует отметить, что скорость выполнения кода на языке ABL и операций с базой данных OpenEdge зависит от характеристик операционной системы, производительности процессоров и файловой системы, а не от конфигурации PAS for OpenEdge. Невозможно настроить PAS for OpenEdge таким образом, чтобы он обеспечивал более высокую скорость выполнения ABL-кода и операций с базой данных по сравнению с пакетными процессами или классическими серверами приложений OpenEdge. Хотя использование разделяемой памяти для подключения к базе данных OpenEdge (самообслуживаемые клиенты) обеспечивает более высокую скорость по сравнению с подключением к серверу приложений OpenEdge, данное ускорение достигается за счет оптимизации механизма подключения, а не за счет повышения производительности самого хранилища данных.
Управление пулом сеансов ABL осуществляется подсистемой SessionManager, которая является общей для всех развернутых веб-приложений OpenEdge. Настройки, определяющие поведение SessionManager, включая управление пулом сеансов ABL, пулом MS-агентов и подключениями к локальным сетевым сокетам, задаются в файле конфигурации PAS, расположенном по пути /conf/openedge.properties. Для редактирования данного файла можно использовать утилиту командной строки /bin/oeprop.{bat|sh}, веб-интерфейс OpenEdge Explorer/Management (при наличии установленного веб-приложения удаленного администрирования OpenEdge) или любой текстовый редактор.
Свойство [AppServer.SessMgr] | По умолчанию | Описание (для каждого приложения ABL) |
numInitialAgents | 1 | Количество процессов MS-Agent, которые необходимо создать при запуске сервера |
maxAgents | 10 | Максимальное количество процессов MS-Agent, которое может существовать |
maxABLSessionsPerAgent | 200 | Максимальное количество ABL-сессий на каждый процесс MS-Agent |
maxConnectionsPerAgent | 16 | Максимальное количество сетевых подключений между Session Manager и MS-Agent |
requestWaitTimeout | 15 000 | Максимальное время в миллисекундах, в течение которого клиентский запрос будет находиться в очереди в ожидании сеанса ABL, прежде чем будет возвращена ошибка |
idleSessionTimeout | 300 000 | Максимальное время в секундах, в течение которого сеанс ABL может оставаться незанятым до его завершения |
idleAgentTimeout | 300 000 | Максимальное время в секундах, в течение которого MS-Agent может оставаться в режиме ожидания перед завершением работы |
agentListenerTimeout | 300 000 | Максимальное время, в течение которого SessionManager будет ожидать сообщения MS-Agent о запуске, прежде чем возникнет ошибка |
idleConnectionTimeout | 300 000 | Максимальное время, в секундах, в течение которого клиент APSV может оставаться в режиме ожидания перед завершением работы |
Свойство [Appserver.Agent] | По умолчанию | Описание (для каждого MS-Agent) |
numInitialSessions | 5 | Количество сеансов ABL, запущенных во время запуска MS-Agent |
Примечание: Полное описание свойств находится в файле PAS for OpenEdge /conf/openedge.properties.README.
Способ настройки свойств OpenEdge во многом зависит от операционной модели, применяемой в приложении ABL:
- С сохранением состояния (stateful), характерная для классического сервера приложений OpenEdge с функциональностью state-reset/state-aware.
- Без сохранения состояния (stateless), соответствующая классической реализации сервера приложений OpenEdge в режиме stateless/state-free.
Для понимания влияния этих моделей на настройки свойств необходимо рассмотреть механизмы управления пулом сеансов ABL и MS-агентами, а также алгоритм выбора сеансов для обработки клиентских запросов, реализуемый ABL SessionManager.
Основной целью SessionManager является оптимизация использования системных ресурсов посредством увеличения пула сеансов ABL и обеспечения возможности выполнения большего числа сеансов, чем требуется для текущей нагрузки. В отличие от классического сервера приложений OpenEdge, который использовал циклический планировщик (round-robin) для распределения клиентских запросов между всеми доступными сеансами ABL, PAS for OpenEdge применяет алгоритм “find-first-free”. Это позволяет использовать только один сеанс ABL для обработки запроса клиента, что снижает потребление памяти операционной системы и количество дескрипторов файловой системы.
Для более детального понимания процесса планирования клиентских запросов без необходимости поиска через MS-агенты, подключения к локальным сокетам и управления сеансами ABL можно описать следующий алгоритм:
- При поступлении запроса от клиента через веб-приложение oeabl, SessionManager инициирует процесс его обработки.
- Выбирается первый MS-агент из списка доступных MS-агентов и устанавливается в качестве текущего агента для обработки запроса.
- Если текущий MS-агент имеет свободный сокет и доступный сеанс ABL, запрос обрабатывается следующим образом:
– Локальный сокет переводится в состояние занятости (in-use) и связывается с выбранным сеансом ABL.
– После завершения обработки запроса сеанс ABL освобождается (free), если не была выполнена постоянная процедура или не установлено условие bound-client в коде приложения ABL. Локальный сокет возвращается в состояние неиспользуемости (unused). - Если количество локальных сокетов текущего MS-агента меньше максимально допустимого, а все сеансы ABL доступны, создается новый сокет, и процесс повторяется с пункта 3.
- Если все MS-агенты заняты, выбирается следующий агент из списка. Процесс повторяется с пункта 3.
- Если количество MS-агентов меньше максимально допустимого, создается новый MS-агент, который добавляется в конец списка. Этот агент становится текущим, и процесс повторяется с пункта 3.
- Если количество запросов не превышает максимальный размер очереди, запрос ставится в очередь. Запросы из очереди выполняются по мере освобождения соединений с сокетами MS-агентов.
Классический сервер приложений OpenEdge поддерживает четыре режима работы, реализующие две модели архитектуры приложений: с сохранением состояния (stateful), при которой для каждого клиента создается отдельный сеанс ABL, и без сохранения состояния (stateless), где сеансы ABL являются общими для всех клиентов. PAS for OpenEdge поддерживает обе модели, обеспечивая обработку всех клиентских запросов без учета состояния, при этом приложение ABL может временно привязывать клиента и работать с сохранением состояния по своему усмотрению. Это влияет на количество необходимых сеансов ABL и MS-агентов, которые следует настроить.