Содержание


Настройка производительности WebSphere DataPower SOA Appliance

Comments

Введение

IBM WebSphere DataPower SOA Appliance – это специализированное устройство, обычно выступающее как шлюз и/или корпоративная сервисная шина (Enterprise Service Bus – ESB), помогающее защитить, ускорить, передать, оформить и маршрутизировать сообщения. В данной статье представлена информация о том, как настроить WebSphere DataPower для достижения желаемой производительности.

В статье рассматривается процесс настройки производительности, начиная с профилирования, а также приводятся предварительные требования, подходы и некоторые советы по тестированию производительности.

Все сведения, действия и схемы в данной статье относятся к устройству WebSphere DataPower Integration Appliance XI50 со встроенным программным обеспечением версии 3.8.0.1.

Профилирование

Перед началом настройки WebSphere DataPower необходимо собрать определенную статистику и данные времени исполнения развернутого у вас решения.

Все части развернутого кода (XSLT), конфигурационных объектов (например, MQ Object), входящих/исходящих соединений и правил обработки необходимо изолировать и профилировать, чтобы понять, какой компонент оказывает наибольшее влияние на производительность (т.е. использует основную часть ресурсов устройства).

XSLT-файлы

Именно XSLT-файлы, вероятно, окажутся в числе компонентов, наиболее влияющих на производительность, поскольку в них реализуется бизнес-логика преобразований (иногда сложных), особенно при использовании функции расширения url-open.

WebSphere DataPower предоставляет функциональность профилирования XSLT. Ниже приведены действия по реализации профилирования для всех XSLT-файлов, выполняемых при любом вызове.

  1. Перейдите к Objects > XML Processing > XML Manager > default (если вы не используете какой-либо иной).
  2. На вкладке Main выберите политику Compile Option Policy (или создайте еще один).
  3. Измените выбранную политику Compile Option Policy.
  4. Выберите правило Profile rule по умолчанию (или создайте новое).

После сохранения этой новой конфигурации и перезапуска клиентского приложения результаты профилирования можно найти здесь:

Откройте Status > XML Processing > Stylesheet Profiles.

Рисунок 1. Профилированные таблицы стилей
Рисунок 1. Профилированные таблицы стилей
Рисунок 1. Профилированные таблицы стилей

Столбцы Count и Time показывают, какой XSLT-файл выполняется дольше всего. Также обратите внимание на то, что значение Time является суммарным временем, потраченным на все попытки выполнения (их количество показано в Count).

Сервисы

Профилирование объектов Service Objects, таких как Web Service Proxy или XML Firewall, можно выполнить следующим образом:

Включение сбора статистики
Это действие включает сбор статистических данных, которые будут очень полезны при профилировании различных объектов.

  1. Откройте Administration > Device > Statistics Settings.
  2. Включите сбор статистики (если это еще не сделано) и нажмите кнопку Apply.

Просмотр информации профилирования

Откройте Status > Connection > Transaction Times.

Рисунок 2. Время транзакций
Рисунок 2. Время транзакций
Рисунок 2. Время транзакций

Теперь можно увидеть среднее время транзакции для каждого из сервисов.

Потоки сообщений

Потоки сообщений подразделяются на 4 типа:

  1. Message (сообщение). Время, затраченное на обработку сообщения запроса, полученного от клиента, плюс время обработки сервером, плюс время обработки ответа сервера устройством (полный цикл транзакции).
  2. Request (запрос). Время, затраченное DataPower на обработку сообщения запроса перед отправкой его на сервер.
  3. Server (сервер). Время, затраченное сервером на обработку сообщения запроса, отправленного ему WebSphere DataPower.
  4. Response (ответ). Время, затраченное WebSphere DataPower на обработку сообщения, полученного от сервера, до отправки его обратно клиенту.

Для профилирования потока сообщений в устройстве выполните следующие действия:

Создание монитора продолжительности сообщений (Message Duration Monitor)

  1. Откройте Objects > Monitoring > Message Duration Monitor.
  2. Нажмите кнопку Add.
  3. Выберите измерение, относящееся к одному из четырех типов, рассмотренных выше.
  4. Заполните форму и нажмите кнопку Apply.

Просмотр статистики

  1. Откройте Control Panel > Status.
  2. Нажмите Messages (duration).
  3. Отобразится только что созданный монитор продолжительности.
Рисунок 3. Монитор продолжительности сообщений
Рисунок 3. Монитор продолжительности сообщений
Рисунок 3. Монитор продолжительности сообщений

Соединения

Можно сделать моментальный снимок входящих, исходящих и внутренних TCP-соединений, а также просмотреть список сервисов, прослушивающих конкретные порты, как показано на рисунке 4.

Откройте Status > IP-Network > TCP Port Status или TCP Port Summary.

Рисунок 4. Состояние TCP-портов
Рисунок 4. Состояние TCP-портов
Рисунок 4. Состояние TCP-портов

Обратите внимание на то, что чем больше соединений, тем больше потребляется памяти. Кроме того процесс открытия/закрытия соединения занимает время центрального процессора.

Сервер

Помимо запуска теста производительности на WebSphere DataPower, его также можно выполнить непосредственно на сервере (backend) и сравнить время задержки в обоих тестах.

Это покажет, вызвана ли задержка устройством или сервером. Это же можно узнать при помощи монитора продолжительности сообщения с типом "server", как было рассмотрено выше в разделе "Потоки сообщений".

Загрузка устройства

Очень полезно наблюдать показатели работы устройства (загрузка ЦП, памяти и системы) в разных ситуациях. В большинстве сред это обычно делается путем периодического SNMP-опроса. Мониторинг загрузки/используемости системы (System Load/Usage) предоставляет более достоверные показатели загрузки устройства, чем показатель загрузки ЦП.

ЦП и память

Откройте Control Panel > View Status > System Information (memory и CPU usage).

Рисунок 5. Использование памяти
Рисунок 5. Использование памяти

Загрузка системы

Страница System Usage (загрузка системы) содержит обзор нагрузки на устройство, включая ЦП, память, ожидающие сообщения и очереди обработки (Work List), описатели файлов/соединений и индикатор суммарной нагрузки.

Откройте Status > System > System Usage.

Рисунок 6. Страница System Usage (загрузка системы)
Рисунок 6. Страница System Usage (загрузка системы)
Рисунок 6. Страница System Usage (загрузка системы)

Примечание. Показатели загрузки системы важнее и точнее, чем показатели загрузки ЦП, поскольку загрузка ЦП может показывать пиковые значения, тогда как загрузка системы учитывает продолжительность.

Настройка

Имея данные профилирования, можно создать план настройки. В следующем разделе будут рассмотрены и описаны наиболее важные действия по настройке, напрямую влияющие на производительность.

Кэширование

Кэширование – это самый важный параметр для настройки производительности с точки зрения времени, затрачиваемого на сетевое взаимодействие, извлечение WSDL-документов или компилирование XSLT-файлов.

WebSphere DataPower предоставляет много возможностей кэширования. Можно кэшировать XSLT-файлы, документы (в частности удаленные документы), WSRR WSDL Retrieval, LDAP/TAM-ответы и т.д. Ниже я опишу действия по настройке кэширования объектов, упомянутых ранее.

XSLT-файлы и документы

XSL-файлы кэшируются по умолчанию. Можно настроить количество кэшируемых XSL-файлов, указав следующий параметр в XML Manager:

Откройте Objects > XML Processing > XML Manager > Your XML Manager (или default).

Установите желаемое значение параметра XSL cache size.

Для кэширования документов откройте вкладку Document Cache в XML Manager и установите желаемое значение для Document Cache Count и желаемое положительное значение для Document Cache Size.

Для кэширования удаленных документов выполните следующие действия:

  1. Откройте вкладку Document Cache Policy.
  2. Нажмите кнопку Add.
  3. Введите выражение URL Match expression, которым может быть любой URL(внутренний или внешний) устройства (например, WSRR REST Calls).
  4. Заполните оставшиеся поля формы.
  5. Нажмите кнопки Apply и Save.
Рисунок 7. Document Cache Policy
Рисунок 7. Document Cache Policy
Рисунок 7. Document Cache Policy

Извлечение WSDL в WSRR

При использовании подписки WSRR WSDL, при которой извлечение WSDL кэшируется по умолчанию, выберите подходящий интервал обновления.

  1. Откройте Control Panel > Web Service Proxy > Your Proxy.
  2. Откройте вкладку WSDL.
  3. Разверните WSDL-подписку.
  4. Введите соответствующее значение в поле Refresh Interval (примечание: вполне подходит значение по умолчанию, если у вас нет каких-либо других предпочтений).
Рисунок 8. Интервал обновления WSDL
Рисунок 8. Интервал обновления WSDL
Рисунок 8. Интервал обновления WSDL

Кэширование AAA

Для объекта AAA кэширование аутентификации и авторизации установлено на 3 секунды по умолчанию, и если у вас нет требований или логических обоснований для уменьшения этого значения (увеличение времени кэширования может привести к ослаблению системы защиты), с точки зрения производительности его лучше повысить.

Откройте Objects > XML Processing > AAA Policy > Your Policy.

На вкладке Authenticate увеличьте значение Cache Lifetime. Это же значение увеличьте на вкладке Authorize.

Рисунок 9. TAM Authorization Cache Lifetime
Рисунок 9. TAM Authorization Cache Lifetime
Рисунок 9. TAM Authorization Cache Lifetime

Персистентные HTTP-соединения

Опция персистентных HTTP-соединений (HTTP Persistent connections) предусматривает многократное использование открытого соединения для отправки нескольких сообщений вместо открытия/закрытия соединения для каждого сообщения. Этот параметр уменьшает затраты циклов ЦП, сетевой трафик и время задержки. Дополнительную информацию см. по ссылке HTTP Persistent Connections в разделе "Ресурсы".

WebSphere DataPower поддерживает персистентные соединения для входящих/исходящих вызовов как часть спецификации HTTP/1.1. Эта опция включена по умолчанию в связанных с HTTP сервисах, таких как обработчик HTTP-интерфейса, Web Service Proxy и XML Firewall. Ниже приведен пример того, как управлять этим параметром в Web Service Proxy.

  1. В Control Panel откройте Web Service Proxy > Your Proxy.
  2. Откройте вкладку Advanced Proxy.
  3. Для параметра Persistent Connections можно установить значение On или Off и указать таймаут персистентности.
Рисунок 10. Параметры персистентного соединения
Рисунок 10. Параметры персистентного соединения
Рисунок 10. Параметры персистентного соединения

Правила обработки

Правила обработки (Processing Rules) – это потоки, содержащие узлы обработки (Action Nodes – узлы действий), применяемые к входящим сообщениям.

Контексты PIPE и NULL

Везде, где возможно, используйте PIPE в качестве элементов Input и Output между двумя смежными узлами действий, что устранит дополнительную обработку и снизит объем используемой памяти.

Используйте NULL в качестве элементов Input или Output любого действия, от которого не требуется формирования результатов или использования результатов предшествующих действий (например, при использовании Transform Action только для установки переменных контекста). Преимущество заключается в экономии времени на создание и синтаксический анализ контекстов, а также в том, что действие становится более читабельным; кроме того, решение будет занимать меньше памяти.

Асинхронные правила
Ограничивайте использование асинхронных правил, поскольку параллельная обработка увеличивает коэффициент использования ЦП (за счет переключений контекста) и объем используемой памяти. Отметим также, что это же справедливо и для параллельных действий.

Повторно используемые правила
Повторно используемые правила часто вызываются много раз из родительских правил. Это может создать избыточность в выполнении узлов действий. При использовании повторно используемых правил включайте в них только те действия, которые будут вызываться много раз, а остальные действия (например, Transform Action для установки переменной) лучше помещать в родительский поток, чтобы устранить избыточность.

XSLT-код
Думайте о производительности с самого начала при написании кода. Ниже приведено несколько советов по обеспечению производительности XSLT.

  1. Избегайте использования "//"; указывайте целевой узел, используя его абсолютный путь в дереве.
  2. 2. Не извлекайте одну и ту же информацию дважды, если в одном и том же файле более одного раза используется функция dp:variable или выбирается значение из документа <xsl:value-of select="document(/path)"/>. Лучше один раз сохранить его в переменную и затем использовать эту переменную.

Менеджер очереди WebSphere MQ

При подключении к MQ используйте "dpmq://" (при этом используется настраиваемый объект MQ Queue Manager Object) вместо прямого MQ-соединения "mq://". Использование прямого MQ-соединения создаст объект менеджера очереди во время исполнения и будет открывать новое соединение с MQ для каждого вызова. При использовании же объекта MQ Queue Manager Object вы будете иметь пул соединений и много других полезных возможностей.

Создать объект MQ Manager Object можно путем выполнения следующих действий:

  1. Откройте Objects > Network Settings > MQ Queue Manager.
  2. Нажмите кнопку Add, заполните форму и нажмите кнопку Apply.
  3. Теперь можно использовать имя этого объекта в url "dpmq://".
Рисунок 11. MQ Queue Manager
Рисунок 11. MQ Queue Manager
Рисунок 11. MQ Queue Manager

Организация потоков

WebSphere DataPower поддерживает организацию потоков (streaming) многих типов, например: потоки выполнения (execution streaming) с использованием SAX при выполнении XSLT, потоки вложений (attachment streaming), потоки сообщений (message streaming) и потоки контекстов (context streaming), как рассказывалось в разделе "Правила обработки" при использовании PIPE.

Эти возможности обеспечивают множество преимуществ, в частности, уменьшают загрузку памяти.

Дополнительная информация об организации потоков в WebSphere DataPower имеется в документации "Оптимизация посредством организации потоков", ссылка на которую приведена в разделе "Ресурсы".

Тестирование производительности

Данный раздел представляет собой руководство по проведению тестов производительности устройств WebSphere DataPower.

Предварительные требования

  1. Установите для уровня регистрации событий значение error, не используйте debug.
  2. Отключите все элементы Probe.
  3. Убедитесь в отсутствии другой активности в устройстве (в том числе в других доменах).
  4. Перед тестированием выполните несколько "разогревающих" вызовов; это помогает при использовании кэширования, а также позволяет убедиться в успешности вызова.
  5. Убедитесь, что используемая вами среда (в частности, пропускная способность сети и тип устройства) аналогична среде клиента.что используемая вами среда (в частности, пропускная способность сети и тип устройства) аналогична среде клиента.
  6. При использовании защиты от XML-угроз (XML Threat protection) убедитесь в том, что она не будет блокировать ваш тест (из-за подозрений на XML-DOS атаку).

Подход к тестированию

  1. Используйте метод нарастающего параллелизма: начинайте с небольшого количества потоков, допустим 10, и увеличивайте его (30, 50, 80 и т.д.) до уровня, когда производительность начнет уменьшаться. Таким образом вы узнаете момент, когда производительность максимальна (нагрузочная способность решения).
  2. Используйте подходящую задержку (время ожидания) потока при тестировании с высоким уровнем параллелизма, поскольку если этого не сделать, можно перегрузить устройство, что повлияет на производительность.
  3. Используйте различные сценарии и наборы данных при тестировании. Хорошо, если они будут соответствовать реальным рабочим сценариям.
  4. Попытайтесь перезапустить тест на длительный период времени (испытание на долговечность), так как некоторые проблемы (например, утечки памяти) проявляются только при этом тестировании.
  5. При генерировании большой нагрузки выбирайте соответствующие средства тестирования и операционные системы (например, Linux или Windows Server), поскольку некоторые средства тестирования и ОС могут быть не способны генерировать нагрузку для переполнения устройства.

Средства тестирования

Ниже приведен список некоторых доступных средств тестирования:

  1. IBM Rational Performance Tester for SOA Quality
  2. JMeter
  3. SOAP UI
  4. Apache Bench

Советы и рекомендации

Обновления встроенной микропрограммы (технические комментарии)

Всегда следите за последними версиями встроенного микропрограммного обеспечения и техническими рекомендациями на сайте службы поддержки IBM по WebSphere DataPower (ссылка приведена в разделе "Ресурсы"). Они могут содержать исправления и решения проблем производительности, например, утечек памяти.

Очередь обработки устройства

Если клиентское приложение отправляет большое количество сообщений на устройство и эти сообщения обрабатываются и посылаются на сервер асинхронно, производительность сервера может быть не настроена в достаточной степени для потребления данных сообщений со скоростью их отправки и обработки устройством WebSphere DataPower. Это может привести к ситуации, аналогичной утечке памяти, поскольку устройство будет помещать сообщения в очередь (в память) до тех пор, пока сервер способен принять их.

Решением в данной ситуации является оптимизация производительности сервера для приема большего количества сообщений в заданный промежуток времени.

Заключение

В процессе изучения данной статьи вы узнали, как профилировать, настраивать и тестировать производительность WebSphere DataPower. Даже используя функциональные возможности и объекты, отличные от рассмотренных в статье, вы все равно можете использовать предоставленные методики и примеры для достижения поставленных целей.

Благодарности

Я хотел бы поблагодарить Билла Хайнса (Bill Hines) и Арифа Сиддикуи (Arif Siddiqui) за прочтение статьи и ценные комментарии.


Ресурсы для скачивания


Похожие темы


Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=SOA и web-сервисы, WebSphere
ArticleID=660765
ArticleTitle=Настройка производительности WebSphere DataPower SOA Appliance
publish-date=05252011