четверг, 9 июня 2011 г.

Когда подводит память

Бывает что при большом количестве пользователей JMeter вдруг перестает поддерживать  заданное количество повторений заданным количеством пользователей, количество запросов упирается в потолок и всё... пытаешься сохранить в CSV файл хотя бы то что уже насобиралось, а он открывает окно сохранения и очень надолго уходит в страну вечной охоты.

Помог запуск JMeter с принудительным определенным заранее памяти с которой придется работать. Точнее это даже не самому  JMeter, а java машине. Выглядит сам запуск примерно так:

java -Xms512m -Xmx512m -XX:MaxPermSize=256m -jar ApacheJmeter.jar

-Xms512m  - память выделяемая с самого начала, в нашем случае это 512М, можно и 1Г (1g)  дать, сколько не жалко, но не больше чем есть.
-Xmx512m  - максимальное количество выделяемой памяти.
Рекомендуют эти две величины задавать одинаковыми, что бы не отвлекать java машину постоянными пересчетами сколько ей нужно памяти.
 -XX:MaxPermSize=256m - максимальный объем памяти выделяемый "куче"

Для удобства сделал себе bat-ник
"путь к каталогу с jmeter\bin
java -Xms512m -Xmx512m -XX:MaxPermSize=256m -jar ApacheJmeter.jar "






четверг, 2 июня 2011 г.

Мониторинг производительности сервера.

Много где писано , что мониторинг производительности сервера на котором установлено нагружаемое приложение это хорошо, полезно,  а главное красиво, но током найти как собственно подключать и настраивать монитор мало где и то по урывками. Вот всё что удалось найти, систематизировать и собственно применить.

В моем случае был jboss. на его примере и рассмотрим. Для начала не будет лишним убедиться, что можно к нему достучаться.  Идем по ссылке вида
http://jboss.server.com:8080/status 
или что бы посмотреть сырой XML который потом будет парситься
http://jboss.server.com:8080/status?XML=true
вобщем нам нужно знать где лежит этот преславутый XML и есть ли к нему доступ.
Если есть то не мудрствуя лукаво добавляем в Thread Group  "Add">>"Sampler" >>
"HTTP Request" где надо указать 
Server name - сервер или его IP 
Port number - порт 
Path - путь к месту куда сервлет кладет XML 
Добавить параметры в сервлет что бы он возвращал результат как  XML: 
Name = "XML," Value = "true"
Отметить чекбокс "Use as monitor"
Если требуется авторизация то перед этим запросом надо добавить 
HTTP Authorization Manager
Немаловажно добавить к нашему Server Status-у таймер. Нужно это для того чтобы 
дать устаканиться переходным процессам  которые обязательно будут когда на 
сервер пойдет, генерируемая нами, нагрузка и подпортят нам общую картину.
3-8 секунд вполне достаточно
 
И торжественным финалом добавляется Monitor Results listener.
"Add">>"Listeners">>"Monitor Results"