Пул сеансов OpenEdge ABL и планирование запросов
В данном разделе представлена информация, позволяющая управлять PAS во время, а также сеансами ABL, которые используются для обработки клиентских запросов и выполнения параллельных запросов от клиентов.
Времени запуска и обработка начальных клиентских запросов
SessionManager должен инициировать запуск по крайней мере одного MS-агента при запуске экземпляра PAS for OpenEdge. В процессе запуска MS-Agent, SessionManager приостанавливает свою работу до получения обратного вызова от MS-Agent, который информирует о статусе запуска и последующих уведомлениях. Если в течение периода agentListenerTimeout обратный вызов не поступает, SessionManager считает, что MS-агент либо не отвечает, либо не может быть запущен.
PAS fot OpenEdge SessionManager использует параметр numInitialAgents для начала создания списка процессов MS-агента. Каждый процесс MS-Agent, в свою очередь, использует параметр numInitialSessions, чтобы инициировать создание списка физических сеансов ABL, которые могут быть запущены в режиме ожидания. Например, один экземпляр MS-Agent с пятью начальными сеансами ABL создает пул сеансов ABL начального размера пять. При запуске трех экземпляров MS-Agent, каждый из которых имеет пять начальных сеансов ABL, первоначальный размер пула сеансов ABL составит пятнадцать.
Рекомендации по настройке:
- Увеличение значения параметра agentListenerTimeout может привести к увеличению времени запуска экземпляра PAS for OpenEdge в случае возникновения сбоев при запуске MS-Agent. Установка слишком короткого значения может привести к тому, что PAS начнет работу раньше, но SessionManager может ошибочно определить MS-агент как недоступный.
- Настройка количества процессов MS-Agent и физических сеансов ABL зависит от времени, необходимого для выполнения процедуры запуска в реализации приложения ABL. Увеличение этих параметров приведет к увеличению времени до начала обработки клиентских запросов. Недостаточное количество сеансов может привести к задержкам в обработке первых клиентских запросов до запуска дополнительных сеансов ABL и/или процессов MS-Agent.
Масштабирование MS-агентов и физических сеансов ABL
После первоначального запуска, SessionManager автоматически масштабирует количество физических сеансов ABL в зависимости от нагрузки, поступающей от клиентов. Процесс масштабирования начинается с добавления сеансов ABL к первому экземпляру MS-Agent до достижения предела maxABLSessionsPerAgent. Если для удовлетворения запросов клиентов требуется больше сеансов, они добавляются к следующему экземпляру MS-Agent. Этот процесс продолжается до тех пор, пока не будет достигнут предел maxAgents. В случае превышения этого предела, SessionManager начинает возвращать клиентам сообщения об ошибке “no session available”.
Рекомендации по настройке:
- Максимальное количество сеансов ABL для одного экземпляра MS-Agent ограничивается ресурсами операционной системы, такими как память и файлы. Каждый сеанс ABL использует ресурсы процесса, поэтому значение этого параметра не должно превышать поддерживаемые операционной системой ограничения.
- Оптимальная производительность достигается при минимизации количества экземпляров MS-Agent за счет увеличения числа сеансов ABL и количества обрабатываемых клиентских запросов на каждый экземпляр.
- Для моделей приложений ABL без отслеживания состояния (stateless) оптимальным решением является использование одного экземпляра MS-Agent и нескольких сеансов ABL. В этом случае накладные расходы на обработку запросов без состояния будут минимальными.
- Масштабирование для увеличения количества экземпляров MS-Agent является целесообразным при использовании приложений ABL, поддерживающих запросы с отслеживанием состояния (stateful). В этом случае накладные расходы для клиентов с отслеживанием состояния невелики, так как запросы направляются непосредственно в определенный сеанс ABL на конкретном экземпляре MS-Agent без необходимости поиска свободного сеанса.
SessionManager направлен на оптимизацию использования ресурсов. Для этого он периодически сканирует все экземпляры MS-Agent и физические сеансы ABL на предмет бездействия. Если время бездействия превышает установленные параметры idleAgentTimeout для экземпляров MS-Agent и idleSessionTimeout для сеансов ABL, они отключаются от обслуживания и корректно завершаются.
Рекомендации по настройке:
- Частые изменения клиентского трафика могут привести к сбоям в работе из-за снижения времени отклика клиентов, если экземпляры MS-Agent и сеансы ABL завершаются слишком рано. В этом случае рекомендуется увеличить время бездействия, в течение которого ресурсы могут оставаться незанятыми.
- При обнаружении в показателях OpenEdge большого количества запусков и остановок экземпляров MS-Agent/ABL, а также незанятых ресурсов, следует увеличить время бездействия перед завершением ресурсов.
- Также существует возможность ручного управления завершением незанятых ресурсов. Для отключения автоматического завершения ресурсов необходимо установить для параметра idleResourceTimeout значение 0 и использовать плагин JMX или удаленного администрирования OpenEdge для ручного завершения незанятых ресурсов.
Управление одновременым выполнением запросов
MS-Agent способен обрабатывать одновременно только то количество клиентских запросов, которое соответствует числу активных локальных сокетных соединений между SessionManager и самим MS-Agent. SessionManager автоматически регулирует количество подключений к локальным сокетам MS-агентов до установленного предела maxConnectionsPerAgent, осуществляя поиск свободного (неактивного) сеанса ABL для выполнения клиентского запроса. В результате этого процесса также осуществляется управление пулом потоков операционной системы, зарезервированных для обработки клиентских запросов. При установлении нового подключения к локальным сокетам инициируется новый поток операционной системы для обработки запросов, поступающих через данный сокет. При закрытии подключения соответствующий поток операционной системы освобождается из пула.
Как только устанавливается подключение к локальному сокету и доступен поток операционной системы, данный поток может быть использован для обработки клиентских запросов, независимо от состояния привязки к клиенту.
Рекомендации по настройке:
- Не рекомендуется устанавливать максимальное количество подключений к локальным сокетам свыше максимально допустимого числа физических сеансов ABL.
- Не следует превышать максимальное количество подключений к локальным сокетам сверх максимально допустимого количества сеансов ABL.
- Общая сумма подключений к локальным сокетам для всех MS-агентов не должна превышать размер пула потоков PAS, предназначенных для обработки HTTP-запросов, чтобы избежать неэффективного использования ресурсов.
- Определение оптимального количества подключений к локальным сокетам зависит от особенностей реализации приложения ABL. В случае, если приложение ABL характеризуется высокими уровнями ввода-вывода файлов, баз данных или сокетов, рекомендуется увеличить количество подключений к сокетам и сеансов ABL. Это обусловлено тем, что значительная часть сеансов будет находиться в состоянии простоя, что позволит использовать ресурсы процессора для выполнения инструкций языка ABL.
Примечание: Процесс запуска и остановки подключений к локальным сокетам и потоков операционной системы не коррелирует с запуском или завершением физических сеансов ABL.