2. Пилотный проект по нагрузочному
тестированию Lotus Notes
Бизнес цель проекта: Нужно организовать нагрузочное тестирование
клиент-серверного ПО на платформе Lotus Notes, чтобы понять и
улучшить характеристики системы.
Цели пилотного проекта:
3. Понять существует ли техническая возможность проведения
нагрузочного тестирования.
4. Создать тестовый стенд, на котором можно провести испытания
производительности.
5. Написать программные скрипты, эмулирующие реальные действия
пользователя и понять особенности написания скриптов для
терминалов.
6. Провести пробное нагрузочное испытание с небольшим количеством
виртуальных пользователей, чтобы доказать принципиальную
возможность проведения нагрузочных испытаний для большого
количества пользователей и понять связанные с этим проблемы.
7. Понять требования к программному и аппаратному обеспечению для
создания тестового стенда, эмулирующего работу большого
количества пользователей.
3. Проблемы нагрузочного
тестирования клиент-серверного
ПО
Написание нагрузочных скриптов
для клиент-серверных
приложений технически и
организационно является
сложной задачей:
• Трафик между клиентом и
сервером может не Нагрузочное ПО
обрабатываться приложениями
по нагрузке (например, он
может быть зашифрован).
• Распознавание интерфейса для
некоторых видов приложений не Протоколы
возможно из за отсутствия
библиотек распознавания.
• Обработка протоколов трафика Клиент
Сервер
или библиотеки распознавания
интерфейса должна быть либо
разработана с нуля либо
куплена.
4. Терминальное ПО как решение
проблем распознавания интерфейса
Решением проблем нагрузочного тестирования клиент-серверного ПО
является использование терминального ПО. В этом случае интерфейс
“стандартизируется” терминальным ПО.
5. Терминальный сервер Сitrix
XenApp
Виртуализация приложений на стороне сервера абстрагирует
пользовательский интерфейс от логики выполнения приложения.
Application Hub
ICA Протокол
ICA Клиент
XenApp Server
6. Тестовый Стенд
Генератор Нагрузки Сервер Citrix XenApp Сервер Lotus Domino
IBM Rational Performance
Tester 7.0
100 Мбит/с 100 Мбит/с
Lotus Notes
Lotus Notes
Lotus Domino Прикладное ПО
Lotus Notes
Win Server 2008 Win Server2003
Citrix XenApp 5.0
Ограничения тестового стенда:
• OC на XenApp сервере была 32х битной, что ограничило возможности
расширения памяти. -> Для реального стенда нужна 64- битная ОС
• Для каждого приложения Lotus Notes на сервере XenApp нужно от
50Мb памяти.
• Сеть была 100Мбит/с -> Для реального стенда нужна будет 1Gbit/c
сеть.
• Ограничение графических ресурсов генератора нагрузки. Безопасно
запускать 20-40 пользователей на одном генераторе.
7. IBM Performance Tester -
написание нагрузочных скриптов
Что показало написание нагрузочных скриптов для Сitrix:
• Только штатный выход из приложения. Lotus - это не web приложение,
когда браузер можно закрыть в любой момент.
• Элементы интерфейса не распознаются, взаимодействие идет по
координатам.
• Распознавание и синхронизация страниц замедляют выполнение
скрипта, но улучшают выполнение скриптов.
• Нужно избегать использование мыши,когда это возможно.
• Скрипты должны быть достаточно простыми и тестировать только
определенную функциональность.
• Отсутствие распознавания элементов интерфейса приводит к тому,
что запись и отладка скриптов нагрузки занимает в 3-4 раза больше
времени, чем, например, для web приложений.
8. IBM Performance Tester –
нагрузочное тестирование
Что показало показало нагрузочное тестирование Lotus:
2. Нельзя использовать синхронизацию действий виртуальных
пользователей (rendezvous points).
3. Количество виртуальных пользователей ограничено графическими
ресурсами компьютера. Рекомендуется записывать скрипты нагрузки
для маленьких размеров экрана и небольшого количества цветов.
4. Из видов нагрузочного тестирования измерение времени отклика для
различного количества виртуальных пользователей было наиболее
востребованно и просто получить.
5. Результаты тестирования показали, что время отклика было от 1.5 до 5
секунд, что является хорошим результатом.
9. Выводы
1. Виртуализация приложений с помощью терминального ПО позволяет
проводить нагрузочное тестирование для любых клиент-серверных
приложений.
2. Для запуска большого количества одновременно работающих клиентов
нужно создавать высокопроизводительный тестовый стенд.
3. Поскольку нагрузочное ПО работает с интерфейсом на низком уровне,
то существуют ограничения на создание и выполнение нагрузочных
скриптов.
В настоящее время под понятием «терминальный сервер» понимается следующее:• Консольные сервера (Console Servers), которые часто используются для подключения к Unix-системам. Это позволяет администраторам подключаться к серверам через сеть.• Сервера сетевого доступа (Network Access Servers). Подобные системы функционируют в качестве шлюзов, предоставляя доступ к «закрытым» ресурсам. В качестве примера можно привести системы доступа в Интернет – клиент открывает браузер, сервер провайдера просит указать логин и пароль и в случае, если данные правильные, предоставляет доступ.• Сервера, использующиеся для «централизованных вычислений» (centralized computing). Существует две современные модели централизованных вычислений: в первой модели терминальный сервер обеспечивает Windows или Linux десктоп для многих пользовательских терминалов, во второй модели обычный компьютер выступает в ролитерминального сервера.Рассмотрим примеры. Широко распространенные в настоящее время системы Citrix XenApp и Windows Terminal Services позволяют обеспечить эффективную удаленную работу многих пользователей с помощью одного терминального сервера. Встроенный в Windows XP Remote Desktop позволяет удаленному пользователю запускать приложения на удаленной машине, отображая информацию на локальном компьютере, но только для одного пользователя в конкретный момент времени.Встроенный в Windows XP Remote Desktop представляет собой второй тип «серверов централизованных вычислений», т.е. позволяет удаленному пользователю запускать приложения на удаленной машине, отображая информацию на локальном компьютере, но только для одного пользователя в конкретный момент времени. Если следовать историческому определению терминала, то ни Citrix MetaFrame, ни Microsoft Terminal Services не являются терминальными системами, но возможна аналогия: Citrix Server – это по сути аналог мэйнфрема, а Citrix Client – аналог терминального устройства.
XenApp сервер предоставляет доступ к приложениям через коммуникационный протокол ICA (Independent Computing Architecture), который позволяет разделить выполнение приложения и пользовательский интерфейс. Приложение выполняется на сервере и XenApp перехватывает показ интерфейса приложения и посылает эту зашифрованную информацию приложению клиента ICA, работающего на компьютере пользователя. Все пользовательские действия (работа с клавиатурой, мышью) посылаются обратно на сервер XenApp.Citrix XenApp обеспечивает возможность записи нагрузочных скриптов поскольку является промышленной и распространенной терминальной системой.Как известно, инструменты нагрузочного тестирования генерируют скрипты путем обработки «перехваченного» трафика между клиентом и сервером. В частности для ODBC-приложений скрипт будет представлять собой набор команд (lrd_open_connection, lrd_open_cursor, lrd_fetch ит.д.)1. При записи скриптов для терминальных систем инструменты нагрузочного тестирования используют совершенно другой подход – они записывают не трафик, а действия с интерфейсом приложения, т.е. скрипт будет представлять собой набор команд (ctrx_key, ctrx_mouse_click и т.д.).В некотором смысле можно считать, что терминальные нагрузочные скрипты подобны GUI-скриптам, которые используются при функциональном тестировании, однако в отличие от последних, для терминальных нагрузочных скриптов нет ограничения «в конкретный момент времени на конкретном компьютере может быть запущен только один GUI-скрипт», т.е. на одном компьютере может эмулироваться одновременная работа многих терминальных пользователей.
Был создан тестовый стенд, изображенный на слайде. Генератором нагрузки была рабочая станция с установленным IBM Rational Performance Tester 7.0. В будущем, для создания большой нагрузки, можно будет использовать несколько рабочих станций с установленным Performance Tester. Возможности этого приложения позволяют создавать нагрузку с нескольких компьютеров одновременно.На сервере Citrix XenApp было установлено 10 клиентов Lotus Notes. Один клиент Lotus Notes требует от 50 Мб памяти. Соответственно, запуск, например, 500 клиентов потребует около 25 Gb оперативной памяти на Citrix сервере. На текущем Citrix сервере было установлено 4 Gb памяти. Текущая лицензия на Citrix позволяет создать серверную “ферму” из нескольких серверов, где можно установить требуемое количество Lotus клиентов. Для создания реальной нагрузки нужно будет от двух Сitrix XenApp серверов с 16Gb памяти каждый.Сервером СЭД Канцлер был выделенный компьютер с Win Server 2008 и 4Gb оперативной памяти. Тестовый стенд работал в сети с пропускной способностью 100 Мбит/с. Для моделирования реальной нагрузки весь стенд должен работать в сети с пропускной способностью 1 Гбит/с.
Следует учитывать некоторые особенности и ограничения, существующие при написании нагрузочных скриптов:• При записи скрипта выход из приложения должен быть штатным!• Во время воспроизведения Citrix-скриптов часто необходимо синхронизировать действия, для того чтобы скрипты выполнялись успешно. Синхронизация представляет собой координацию действий внутри скрипта, таких как ожидание появления окон или доступности элементов интерфейса. К примеру, Вы можете добавить проверку появления нужного окна, прежде чем нажимать в нем какую-либо кнопку. Rational Performance Tester позволяет автоматически генерировать функции синхронизации, однако также существует возможность добавления этих функций вручную.• для обеспечения лучшего распознавания элементов интерфейса тестируемого приложения можно использовать так называемый Citrix Agent, который устанавливается на сервереCitrix MetaFrame и позволяет записывать дополнительную информацию об объектах Citrix- клиента, а также сохранять текст, содержащийся внутри объектов (например, в объектах типа Edit-box) в буфере.• по возможности во время записи скриптов следует использовать клавиатуру и избегать использование мыши всякий раз, когда это возможно.
Следует учитывать некоторые особенности и ограничения, существующие при выполнении нагрузочного тестирования:• Нельзя синхронизировать действия пользователей (rendezvous points) в определенные моменты времени, чтобы нагрузить определенный функционал.• при записи Citrix-скриптов и их последующем воспроизведении следует помнить, что настройки Citrix-клиентов на генераторах нагрузки (Load generators) должны быть одинаковыми и соответствовать настройкам, которые были установлены на компьютере, с которого производилась запись скриптов (Desktop colors, Screen Resolution, System Font etc.); не рекомендуется изменять размеры окон либо перемещать окна во время записи скрипта.• рекомендуется, чтобы видеокарта была одинаковой на всех генераторах нагрузки и соответствовала машине, на которой записывались скрипты• существует ограничение на количество виртуальных пользователей, запускаемых на одном генераторе нагрузки, которое связано с доступными графическими ресурсами компьютера, на котором функционирует генератор нагрузки. В среднем вполне безопасно запускать 20-40 виртуальных пользователей на одном генераторе нагрузки.• для того чтобы увеличить количество виртуальных пользователей, запускаемых на одном компьютере, необходимо создавать «виртуальные генераторы нагрузки». Для создания нового виртуального генератора нагрузки необходимо открыть терминальную сессию, которая в итоге становится виртуальным генератором нагрузки. На каждом виртуальном генераторе нагрузки можно в среднем запускать от 20 до 40 виртуальных пользователей. Следует помнить, что терминальные сессии имеют только 256 цветов (это ограничение не относится к ОС Windows 2003), поэтому при использовании виртуальных генераторов нагрузки записывать скрипты следует также через терминальную сессию2. В крайнем случае, можно на машине, с которой производится запись скриптов, установить 256цветов, однако такой вариант не очень надежный и не всегда позволяет использовать возможности bitmap-синхронизации3.