Время инициализации PAS
Время, необходимое для запуска и начала обработки клиентских запросов системой PAS, может представлять проблему в определенных условиях эксплуатации. Этот временной показатель может зависеть от количества и типа развернутых веб-приложений, а также от конфигурации каждого отдельного веб-приложения.
Процесс загрузки веб-приложений в системе PAS осуществляется последовательно. В момент начала загрузки каждого веб-приложения администратор может регулировать количество сервлетов, которые загружаются и инициализируются немедленно, вместо того чтобы дожидаться первого клиентского запроса. Сокращение количества сервлетов, загружаемых на этапе инициализации, ускоряет процесс загрузки последующих веб-приложений и уменьшает общее время, необходимое для выполнения последовательности запуска. Это время сравнимо с периодом, необходимым для обработки первых клиентских запросов. Компоненты, которые не были загружены при запуске веб-приложения, загружаются при первом обращении клиента.
Управление загрузкой конфигурации сервлетов осуществляется с помощью элемента servlet load-on-startup. По умолчанию сервлет загружается при поступлении первых клиентских запросов, что существенно замедляет время отклика на первый запрос после запуска PAS. При необходимости администратор может настроить загрузку и инициализацию сервлета на этапе запуска PAS, что позволит загружать только дополнительные классы при первом обращении клиента. Такой подход ускоряет время отклика на первый клиентский запрос, но увеличивает время, необходимое для запуска PAS.
Управление HTTP-клиентскими подключениями и HTTP-запросами
PAS обеспечивает комплексное управление клиентскими сетевыми подключениями, реализуя протокол HTTP/S. В рамках этой функции осуществляется обработка следующих аспектов:
- Установление TCP/IP-соединений
- Завершение TCP/IP-соединений
- Обработка тайм-аутов сообщений
- Оптимизация использования ресурсов за счет завершения редко используемых клиентских соединений для обслуживания новых запросов
Для эффективного управления потоками клиентских подключений и HTTP-запросов PAS использует два специализированных пула ресурсов:
- Пул потоков Java Virtual Machine (JVM), предназначенный для выполнения отдельных HTTP-запросов
- Очередь HTTP-запросов, ожидающих обработки в пуле потоков JVM
При установлении сокетного соединения со стороны HTTP-клиента, PAS ожидает получения полного HTTP-запроса в течение заданного периода времени. Если запрос не поступает в течение указанного времени, PAS возвращает сообщение об ошибке. В случае успешного получения запроса, он либо немедленно назначается потоку JVM для обработки, либо ставится в очередь для последующей обработки по мере освобождения потоков.
Размер пула потоков непосредственно влияет на максимальное количество одновременно обрабатываемых клиентских HTTP-запросов. Объем очереди HTTP-запросов определяет максимальное количество запросов, ожидающих обработки, прежде чем PAS начнет возвращать ошибки клиентам. Корректная настройка параметров соединений TCP/IP, пула потоков и очереди HTTP-запросов является ключевым фактором для обеспечения оптимальной производительности и времени отклика системы. Оба пула требуют значительных ресурсов памяти: размер пула потоков влияет на объем памяти в стеке, а размер очереди — на объем памяти в куче.
Apache Tomcat поддерживает использование стандартного BIO (Blocking IO) -коннектора для обработки клиентских подключений и HTTP-запросов. Несмотря на наличие NIO (Non-blocking IO) -коннектора, в предыдущих версиях Tomcat (например, OpenEdge 11.5, 11.6) он считался недостаточно стабильным для использования в качестве коннектора по умолчанию. В более поздних версиях эти проблемы были устранены, и NIO-коннектор стал использоваться по умолчанию. В настоящее время PAS для OpenEdge поддерживает более поздние версии Apache Tomcat, что позволяет использовать NIO-коннектор без риска снижения производительности. Однако, для использования NIO-коннектора в PAS требуется более сложная конфигурация, что может повлиять на общую производительность системы при неправильном выполнении настроек.
Обработка HTTP-запросов
При поступлении HTTP-запроса в систему, если поток Java Virtual Machine (JVM) доступен в пуле потоков PAS, создается новый контекст выполнения HTTP-запроса, который передается соответствующему потоку. Этот поток обрабатывает запрос до его успешного завершения или возникновения ошибки. По завершении обработки поток возвращается в пул и становится доступным для обработки следующих запросов.
В отличие от традиционных серверов приложений OpenEdge, архитектура PAS не предполагает автоматического завершения выполнения HTTP-запросов по истечении определенного времени. Однако PAS предоставляет возможность интеграции с Apache Tomcat Valve, который позволяет отслеживать продолжительность выполнения запросов и генерировать соответствующие сообщения в случае превышения заданного временного порога.
PAS также включает механизмы настройки параметров работы TCP/IP-соединений. Эти параметры определяют допустимое время простоя соединения до получения HTTP-запроса и максимальное время нахождения соединения в очереди перед выделением потока из пула. Корректная настройка этих параметров способствует оптимизации производительности системы при высокой нагрузке и резких скачках количества клиентских запросов.