Використання IBM Rational Performance Tester для проведення навантажувальних випробувань змодельованого книжкового інтернет-магазину, Різне, Програмування, статті

У цій статті узагальнюється досвід групи IBM Platform Evaluation Test з міграції з досвідченою розробки IBM Web Performance Tools (WPT) на Linux-версію IBM Rational Performance Tester, в який тепер включена функціональність WPT. Інструменти моделювання для користувача активності грають ключову роль в нагрузочном тестуванні змодельованого сайту книжкового інтернет-магазину. У цей звіт включені раніше недокументовані питання роботи RPT на Linux і стратегії розширення RPT для використання Web-сервісів і бази даних IBM DB2 для моделювання користувальницького введення. Результати показують, що Rational Performance Tester виконує на 236% більше транзакцій, ніж WPT за той же час. Стаття призначена користувачам середнього рівня і досвідченим користувачам Rational Performance Tester або аналогічного ПО.


У цій статті узагальнюється досвід групи IBM Platform Evaluation Test (PET) по реалізації версії IBM Rational Performance Tester для операційної системи Linux для змодельованого Web-сайту інтернет-магазина. До того, як нам став доступний Rational Performance Tester, наш вибір ПО для моделювання активності користувача був обмежений некомерційними продуктами, наприклад дослідної розробкою IBM Web Performance Tools і Siege. Обидва ці продукту виконують основні функції Web-сесій, наприклад запис і відтворення, але їм не вистачає багатьох корисних функцій, доступних в комерційних продуктах, наприклад Rational Performance Tester. Ми обговорюємо наш перший досвід роботи з Rational Performance Tester і порівнюємо його з WPT в якості базового інструменту моделювання активності користувача. Ми також обговорюємо наш досвід використання пулу даних і можливостей написання власного коду. Нарешті, ми аналізуємо потенціал додаткових розширень середовища навантажувальних випробувань сайту книжкового магазину.


Огляд сайту книжкового магазину


Сайт книжкового магазину є Web-додатком IBM zipSeries, використовуваним тільки всередині IBM, який моделює великий інтернет-магазин типу BarnesAndNoble.com. Це складна, багаторівнева, мультиплатформенна Середа, призначена для емуляції реального сценарію замовника. Книжковий магазин функціонує на обладнанні IBM Systems p, z, i та x, на якому працюють ПО IBM DB2, IBM WebSphere Application Server і IBM WebSphere MQSeries. Ми використовуємо WPT для моделювання активності мільйонів клієнтів магазину і нам вдається знаходити і вирішувати проблеми з ПО, обладнанням та інтеграцією до того, як з ними зіткнуться реальні покупці.


Опис інструментів моделювання активності користувачів


IBM alphaWorks Web Performance Tools


Ми оцінювали три інструменти для тестування сайтів: IBM Web Performance Tools, Siege і IBM Rational Performance Tester.


Продукт IBM Web Performance Tools (WPT) створювався як досвідчена розробка IBM alphaWorks, підрозділи IBM за новітніми технологіями. WPT більше не поліпшується, тому що в ході випробувань він довів свою корисність, і його пустили в тривалу розробку як комерційний продукт. Отже, вся функціональність була включена в Rational Performance Tester.


WPT спочатку працював на платформі IBM AIX і був відомий під назвою AKstress, але в самих останніх його релізах використовувалося назву Web Performance Tools. Новітні версії доступні на інших платформах, в тому числі в операційній системі Linux. WPT складається з двох основних програм: stress (навантаження) і record (запис).



Siege


Siege – це ПЗ, що розповсюджується під ліцензією GPL, можливості якого аналогічні WPT. З часом ми помітили, що його продуктивність також аналогічна WPT. Отже, ми вважаємо, що формальне порівняння цього продукту з Rational Performance Tester було б зайвим.


IBM Rational Performance Tester


Це комерційний продукт IBM для створення користувальницької навантаження. Він функціонує як плагін для платформи розробки ПЗ IBM (SDP) і в даний час підтримується лише для операційних систем Microsoft Windows і Linux. Rational Performance Tester включає повнофункціональну копію IBM Rational ClearCase LT, плюс такі ключові функції:



Попередні вимоги для успішного моделювання активності користувачів книгарні


Одним з ключових аспектів ПО zipSeries є безперебійна робота при високому навантаженні. У минулому ми піддавали його безперервного використання протягом багатьох тижнів, що допомогло визначити, які компоненти книгарні мають тенденцію до відмови. Тому для нашої початкової фази тестування ми встановлюємо такі завдання і вимоги для Rational Performance Tester:



Рандомізація користувача введення в даний час виконується ПО zipSeries, оскільки WPT, будучи дослідної розробкою, має обмеження. Отже, щоб точніше змоделювати реальну ситуацію, ми також хотіли використати унікальні функції Rational Performance Tester для додавання рандомізації до тестового ПО.


Тестова середу


Ми виконували розробку під Red Hat Enterprise Linux WS 3 (ядро 2.4.21-40.EL) за допомогою IBM Rational Application Developer версії 6.0.1.1 FixPack 2 з Java 1.4.2. Ми також використовували development box для проведення більшості тестів, тому нижче в цьому звіті ми називаємо його “тестової машиною.” Це комп’ютер IBM NetVista 8305-R8U з 2,4 Ггц процесором Pentium 4, 1 Гб оперативної пам’яті і 2 Гб своп-файлом і з жорстким диском 35 Гб. Ми виконували тривалі тести в Red Hat Enterprise Linux AS 3 (ядро 2.4.21-20.ELsmp) на комп’ютері IBM X345 з двома 3,2 ГГц процесорами Xeon, 3 Гб оперативної пам’яті і 2 Гб своп-файлом і 15 Гб місця для зберігання даних.


Web-середу розміщувалася на системі IBM POWER 5 ML3, на якій працювала AIX V 5.5 TL4 ServicePac 2. У ній виконувалося додаток для книжкових інтернет-магазинів zipSeries на IBM WebSphere Application Server V 6.0.2, FixPack 7. На обох серверах БД магазину (Browse [Сервер навігації] і Buy [Сервер покупок]) працювала DB2 UDB V 8.1; обладнання відповідало специфікаціям машин для роботи з WebSphere Application Server. Для розміщення Web-сервісів з метою проведення їх тестування використовувалася додаткова машина з WebSphere Application Server під Red Hat Enterprise Linux AS 3 (ядро 2.6.9-22.0.2.ELsmp). Це була система IBM e325 з двома 2 ГГц процесорами Opteron, 3 Гб оперативної пам’яті і 2 Гб своп-файлом і 15 Гб дискового простору.


Мережеве з’єднання між двома нашими тестовими машинами здійснювалося через оптоволоконний гігабітний Ethernet. Для тестування ми використовували Linux-версії Web Performance Tools V 1.9.4 і Rational Performance Tester V 6.1.2 FixPack 2.


Досвід реалізації


У цьому розділі ми описуємо проблеми, з якими ми зіткнулися. Майте на увазі, що хоча Rational Performance Tester підтримується під Linux, він набагато більше тестувався на платформі Windows. Отже, деякі проблеми, які ми тут перераховуємо, можуть не ставитися до Windows-версії.


Установка


Ми завантажили установник Rational Performance Tester з внутрішнього Web-сайту IBM. Установка проста і майже не потребує втручання, але для її завершення потрібно дуже багато часу – на аналогічному обладнанні розраховуйте на 4:00. Відразу після завершення інсталяції потрібно встановити оновлення для Rational Performance Tester і будь-якого іншого раніше встановленого програмного забезпечення платформи розробки ПО IBM (SDP). Рекомендація: Якщо у вас є місце на диску, створіть їх образи. Якщо вам коли-небудь буде потрібно перевстановити Rational Performance Tester з нуля, це заощадить вам час.


Запуск Rational Performance Tester


Rational Performance Tester доступний через подання (перспективу) Test SDP. Рекомендація: На платформі Linux інтегрований Web-браузер може працювати неправильно, якщо ви не встановите змінну оточення MOZILLA_FIVE_HOME. Вона повинна посилатися на директорію установки Mozilla. У нашій системі для розробки такої директорією була /usr/lib/mozilla-1.7.12.


“Падіння” робочого простору


Іноді SDP може “впасти” або зависнути, або робочий простір може вести себе дивно або відмовлятися знову відкриватися. Рекомендація: При закритій SDP видаліть папку. Metadata в директорії робочого простору, знову відкрийте SDP і імпортуйте папки проекту з файлової системи.


Розташування журналу


Повідомлення про помилки часто посилаються на певні журнали, хоча не очевидно, де ці журнали знаходяться. Ось рішення:. Log-файл в папці. Metadata робочого простору містить всі повідомлення про помилки, які відображаються на екрані. У ньому містяться певні винятки, які повертаються SDP, але не все. Рекомендація:



Максимальний розмір пулу даних


Rational Performance Tester містить функцію рандомізації даних, що вводяться у форму. Ви можете створити пул даних, щоб вказати, які значення використовувати. Пул даних цілком завантажується в пам’ять під час виконання. Ця функція забезпечує точність виконання тесту. Проте в результаті максимальний розмір пулу даних залежить від кількості доступної оперативної пам’яті. Rational Performance Tester можна налаштувати так, щоб він використовував більше системної пам’яті за допомогою аргументів віртуальної машини Java (JVM), але цього недостатньо для дуже великих наборів даних (приблизно 10000 значень на машині з 3 Гб оперативки).


Рекомендація: Ми використовували функцію Custom Code (Створення користувацького коду) Rational Performance Tester для створення альтернативного методу пулу даних, при якому не завантажуються примусово всі дані відразу. (Див. наступний розділ).


Використання J2EE з функцією Custom Code


У наступному нижче розділі Тести та процедури ми розглядаємо більш детально, чому нам знадобилося використовувати функціональність Java Platform 2, Enterprise Edition (J2EE), зокрема, Web-сервіси. Майте на увазі, що деякі з цих моментів ставляться до підключення будь-якої зовнішньої бібліотеки для використання з призначеним для користувача кодом. Рекомендації:



  1. Перш за все, порада: Переконайтеся, що програма працює правильно як окремий проект в IBM Rational Application Developer, перш ніж намагатися використовувати її як користувальницький код.
  2. Ви виявите два записи в вашому файлі. Classpath проекту Rational Application Developer, які вам буде потрібно зберегти на майбутнє. Перейдіть в перспективу Resource, Щоб побачити файл. Classpath. Перший запис – для WebSphere Runtime Library, а друга – JAR-файл з бібліотеки, яку потрібно явно включити, якщо ви плануєте використовувати Web-сервіси.



  1. Після створення користувацького коду і включення відповідних записів у файл. Classpath вашого тестового проекту, відкрийте вікно Project Properties (Властивості проекту). Подумайте, не включити чи ваш окремий проект в дорогу складання вашого тестового проекту.
  2. Виберіть JRE System Library і WebSphere V 6.0 Runtime на вкладках Order і Export.
  3. Потім закрийте Rational Performance Tester, зупиніть IBM Rational Agent Controller (або RAServer), перезапустіть його, а потім перезапустіть Rational Performance Tester.
  4. Завжди перевіряйте, що перед запуском тесту на вкладках Order і Export відзначені відповідні бібліотеки. Іноді Rational Performance Tester не зберігає налаштування з вкладок Order і Export. Це особливо помітно, якщо проект експортується, а потім імпортується в нове робоче простір.

Якщо і це не спрацьовує у вашому випадку, спробуйте явно включити всі необхідні JAR-файли в дорогу складання проекту, замість того, щоб використовувати WebSphere V 6.0 під час виконання. Якщо ви використовуєте Web-сервіси, можна включити наступні JAR-файли:



Техпідтримка IBM порадить вам включити всі необхідні JAR-файли в змінну оточення class path перед запуском Rational Performance Tester. Однак у нашому випадку це нічого не змінило. Явна включення (JAR) файлів у файл. Classpath також не повністю спрацював в нашому випадку, але це допомогло нам краще зрозуміти, що ще потрібно зробити, щоб все запрацювало.


Наприклад, якщо JVM не може знайти клас, необхідний для користувача коду під час виконання тесту, IBM Rational Agent Controller проігнорує користувальницький код, і буде діяти, як ніби він повернув null. Коли користувальницький код повертає null, Заміна не проводиться. Ви можете отримати, а можете і не отримати повідомлення про помилку в історії виконання тесту / графіку, коли це станеться. Використовуючи метод Class.forName() в призначеному для користувача коді, ми змогли відслідковувати помилки, коли певний необхідний клас був недоступний Rational Performance Tester під час виконання.


Навіть коли всі необхідні класи доступні Rational Agent Controller і Rational Performance Tester під час виконання, ваша залежить від J2EE програма може як і раніше не працювати. В нашому випадку, виклик ServiceFactory.newInstance() безпосередньо був причиною помилки JVM. Рекомендація: Рішення – використовувати пакет java.lang.reflect і викликати його таким способом:



Див документацію по Java-рефлексії, якщо ви викликаєте методи з аргументами.


Використання оперативної пам’яті


На нашій тестовій машині, короткострокові (10-хвилинні) тести з більш ніж п’ятьма користувачами викликали помилки через брак пам’яті, коли в графік тесту було включено ведення журналу за замовчуванням. Отже, ми встановили ведення журналу в стан none (відсутній), Після того, як переконалися, що все працює правильно. Як ми описуємо нижче в розділі Тести та процедури, для аналізу навантаження нам все одно не потрібні функції ведення журналу Rational Performance Tester.


Виконання за допомогою командних файлів


Rational Performance Tester V 6 підтримує виконання за допомогою командних файлів в Windows через плагін cmdlineexecute. Однак в Linux ця функція не працює. Ситуація зміниться до кінця 2006 – початку 2007 г, коли очікується вихід Rational Performance Tester версії 7.


Тільки адміністратор


Деякі компоненти Rational Performance Tester працюють неправильно, якщо ви їх запускаєте, увійшовши в систему користувачем без адміністративних привілеїв. Ми запускали Rational Performance Tester, увійшовши в систему то адміністратором (root), то звичайним користувачем, і отримали різні результати. Іноді він працює, а іноді ні. Рекомендація: Завжди запускайте Rational Agent Controller, увійшовши в систему адміністратором.


Тести та процедури


Ми провели чотири різних тесту, щоб визначити, чи відповідає Rational Performance Tester нашим вимогам.


Тест порівняння продуктивності


Це був головний тест, який ми використовували для оцінки потенціалу Rational Performance Tester в якості заміни WPT в нашому середовищі. Нас найбільше цікавила можливість Rational Performance Tester виробляти навантаження, яку можна порівняти з WPT. Нас також цікавили ресурси, необхідні для тестової машини, щоб зробити це можливим.


Тест. За допомогою інструменту записи в Rational Performance Tester і WPT ми створили тест, який відвідував випадкову сторінку (Random page) книжкового магазину zipSeries. Ця сторінка викликає сервлет SetRandom для випадкового вибору назви книги зі списку книг, а потім моделює процес покупки. На сторінці Random page користувач може вказати, скільки книг вибрати, і скільки з них купити. Ми змусили кожен інструмент використовувати Random page для пошуку в повному списку назв, а потім для вибору однієї випадкової книги. SetRandom також розміщує, щонайменше, одну покупку для кожного випадкового пошуку (вказана покупка чи ні). Отже, цей тест ефективно моделює один випадковий пошук і одну покупку, то є дві транзакції кожного разу.


Сторінка Random page автоматично закривається після завершення сесії користувача, що допомагає звільнити ресурси WebSphere Application Server. Отже, результати випадкового дзвінка ніколи в дійсності не відображаються в Web-браузері, і ми використовуємо Random page тільки для тестування.


Записані тести були змінені таким чином, щоб вони передавали параметри безпосередньо SetRandom, не відвідуючи спочатку сторінку Random page за замовчуванням. Це скорочує зайвий HTTP-трафік. Єдині дані, які повертаються в програму stress – це сторінка виходу з системи.


WPT використовує концепції клієнтів і потоків, де клієнт (Користувач за термінологією Rational Performance Tester) відповідає за початок записаного тесту та відвідування заздалегідь зазначеної Web-сторінки. Потоки клієнтів відповідають за завершення моделювання, що означає відвідування додаткових записаних сторінок під час тесту. Rational Performance Tester також використовує потоки, але кінцеві користувачі не можуть контролювати їх таким же чином. Це ще одна причина, чому ми змушували тест відвідувати лише одну сторінку під час моделювання, так як це може бути краще з точки зору порівняння. У записі WPT ми встановили кількість потоків на клієнта 1 (один), Але так як відвідується тільки одна сторінка, це число не підходить.


Примітка:
Відвідини здійснювалися безпосередньо через порт WebSphere Application Server, пересилання через HTTP-сервер IBM не було.


Вимірювання: Хоча і Rational Performance Tester, і WPT забезпечують статистику виконання тесту, ми використовували власний механізм вимірювання їх можливостей. Ми вимірювали навантаження кількістю виконаних транзакцій бази даних, а не відвідування Web-сторінками, і ми вимірювали локальні ресурси за допомогою постійно ведеться журналу vmstat.


У нас є програма, вбудована в WebSphere Application Server, яка скидає всі виконувані WebSphere Application Server транзакції бази даних у файл. З часом цей файл аналізується і передається нашій базі даних SLA. Ми називаємо це методом скребка (scraper). Спочатку у нас WebSphere Application Server безпосередньо оновлював базу даних SLA через JDBC, але ми виявили, що це значно знижує продуктивність тесту. Тепер ми перевіряємо базу даних SLA в кінці виконання тесту, щоб визначити кількість проведених транзакцій.


Процедура: В обох програмних пакетах ми змогли вказати, скільки разів повторювати тест, а також максимальний час його виконання. Кожен тест безупинно повторювався 10 хвилин, з максимум 10000 повтореннями (ми спеціально вибрали кількість, яка ніколи не буде досягнуто за такими тимчасовими рамками). Весь процес тривав близько години для кожного продукту, так як ми запускали навантаження для 1, 5, 10, 15, 20 і 25 користувачів для кожного. У той час як процес тестування для WPT повністю управлявся скриптом, виконання за допомогою командних файлів ще не підтримується в Linux-версії Rational Performance Tester. Рекомендація: Отже, вам, можливо, буде потрібно виконати такі ж кроки, які виконували ми, для запуску тестів:



  1. Перезапустіть ПО WebSphere Application Server при роботі zipSeries.
  2. Початок оновлення бази даних SLA, щоб переконатися, що всі попередні транзакції включені.
  3. Отримайте і запишіть загальна кількість транзакцій від бази даних SLA перед тестом.
  4. Почніть журнал vmstat з двосекундних інтервалом на тестовій машині.
  5. Запустіть навантажувальний тест з X одночасних користувачів.
  6. Знову запустіть оновлення бази даних SLA.
  7. Знову отримаєте загальна кількість транзакцій від SLA після тесту, а потім порівняйте його з загальною кількістю до тесту.

Примітка:
Загальна кількість транзакцій від бази даних SLA включає як транзакції при навігації (Browse), так і транзакції при покупці (Buy). Ми занесли ці цифри в таблицю, яку використовували пізніше для аналізу журналів vmstat.


Шлях передачі даних. Рисунок 1 показує, як працює порівняльний тест. Він починається з тестовою машини (на якій працює Rational Performance Tester або WPT), що одержує доступ до SetRandom в ПО zipSeries. З бази даних Browse вибирається випадкове назву, а потім здійснюється покупка за допомогою бази даних Buy. Згодом базі даних SLA відправляється журнал scraper log, і статистика транзакцій, зрештою, виявляється на тестовій машині. Майте на увазі, що незалежно від нормального режиму роботи zipSeries, при тестуванні вся комунікація з базами даних здійснюється через JDBC, в тому числі і покупки.



Рисунок 1. Як працює порівняльний тест

Зверніть, як мало пам’яті економиться на zip-машині, коли вона звільняється від рандомізації імен – максимум близько 33 MB. Отже, виконання власне рандомізації вимагає невеликого обсягу додаткової пам’яті. Якщо тільки не потрібно виконувати великий обсяг кешування, звільнення від рандомізації дає дві переваги: ​​покращена модульність ПО і вивільнене процесорний час на сервері. Тим не менше, доданий користувальницький код задіює більше ресурсів на тестовій машині, хоча не значно більше, ніж вивільняється ресурсів на zip-машині.


Висновки та плани на майбутнє


В цілому, можливості Rational Performance Tester справили на нас велике враження. Хоча він і використовує більше локальних ресурсів, ніж WPT, він може виконувати більше транзакцій за той же час. Функція Custom Code була дуже корисною для зняття частини навантаження з машини, на якій працював WebSphere Application Server. Здатність виконувати різні тести одночасно дозволить нам об’єднати процес тестування. Так як Rational Agent Controller може поширювати тести з багатьох машин, нам буде легше аналізувати вплив на трафік з різних місць. Отже, Rational Performance Tester містить майже всі функції, які нам подобаються в WPT, плюс кілька потужних додаткових можливостей. Хоча інсталяція зайняла час, пройшла вона просто. Після інсталяції Rational Performance Tester не потрібно додаткова настройка, крім установки оновлення. Графічний інтерфейс користувача дозволяє швидко освоїти основні функції і можливості.


Висловлюючи наше задоволення Rational Performance Tester, ми плануємо використовувати його для безперервного тестування. Ми модифікуємо метод SetRandom в ПО zipSeries для найкращого використання Web-сервісу випадкових імен. Сам Web-сервіс потрібно буде поліпшити, якщо ми вирішимо розширити його таким чином, щоб він виконував всю функціональність, пов’язану з навігацією. Ми розглянемо можливість використання заснованого на DADX Web-сервісу. Як ми вже згадували, Rational Performance Tester дозволить нам об’єднати і організувати деякі види тестування, а коли буде зроблена підтримка плагіна cmdlineexecute для Linux, ми зможемо виконати міграцію деяких наших тестових скриптів, заснованих на WPT.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*