Нагрузочное тестирование «по-быстренькому»

    Может кому будет интересно как «по-быстрому» провести нагрузочное тестирование своего веб-приложения.
    Подробности под катом

    Вместо предисловия


    На сегодняшнем стендапе Марек (программист из Польши принимающий участие в проекте EmForge) сказал, что общался с рядом друзей, у которых в прошлом был большой опыт работы с Liferay (который мы как раз активно используем) — и опыт оказался очень негативный, в первую очередь из-за проблем со скоростью. Некоторые проекты тупо накрылись из-за того что эти проблемы так и не получилось решить.

    Нет — мы конечно собирались проводить нагрузочное тестирование, но не сейчас, чуть попозже, когда будет побольше функционала, и то, чисто что бы убедиться что все ок, или «не ОК» в каких-то определенных местах — и их править.
    Но тут вопрос встал ребром — если все так плохо — то какие-то решения надо принимать уже сейчас — пока не стало поздно. Вывод один — нагрузочное тестирование получает более высокий приоритет по сравнению с остальными задачами

    Не «по-быстренькому»


    Изначально планировалось идти стандартным путем — взять JMeter, написать для начала простенький скрипт обхода основных страниц с основной функциональностью анонимным пользователем — потом усовершенствовать помаленьку, параллельно решая вопросы как грамотно запустить это добро на нескольких клиентский машинах.

    Вообщем задача не на один час

    А по-быстренькому?


    Но тут я вспомнил, что на Хабре была статья (статью к сожалению не нашел — так бы кинул ссылку), где человек сетовал, что люди не прогоняют нагрузочное тестирование на своем сайте, шлют ссылку на хабр, а потом, когда надо снимать «сливки» с хабраэффекта мучительно сайт поднимают ( а пользователи не видят ничего кроме сообщений об ошибках).
    Так вот там кто-то советовал несколько сервисов, которые проводят такое нагрузочное тестирование.

    Вообще наиболее полезной ссылкой по теме нагрузочного тестирования оказалась эта — тут перечисленны и утилиты типа JMeter, и сервисы по организации тестирования. на первых трех я и остановлюсь чуть подробнее

    Совсем по-быстренькому?


    Если совсем по-быстрому — то это Load Impact — не надо никаких регистраций — заходите — даете URL — и в течении 10-15 минут 50 виртуальных пользователей терроризируют вашу страницу. Тупо, просто — но по крайней мере позволит увидеть что при первом же наплыве ваше приложение не ляжет. Не легло? Идем дальше

    Нагрузочное тестирование за 1.5 часа


    Мне очень понравился LoadStorm. С ним работа строится следующим образом:
    1. регистрируемся
    2. Создаем тест — в котором указывает сайт который будем пытать
    3. Прежде чем начать пытку- требуется верификация (а вдруг вы хотите положить сайт конкурента????). надо на главную страницу положить определенный текст с кодом — или файл с определенным именем в корень
    4. Дальше создаем сценарий — при создании сценария описываем, как пользователь идет по вашему сайту, какие линки нажимает, можно засабмитить формы. Все достаточно интуитивно и понятно
    5. потом говорим когда запустить
    6. в назначенное время тест запускается, ждем 30 минут пока до 50-ти пользователей бродят по вашему сайту согласно вашим указаниям — и получаем отчет.

    Да, 50 одновременных пользователей — это не совсем серьезно — даже на хаброэффект не потянет — но уже что-то. Надо больше — есть платная подписка (да — забыл сказать что все это бесплатно). В моем случае — 50 одновременных пользователей это та нагрузка, о которой я пока и не мечтаю в ближайшие несколько месяцев — так что мне было достаточно.

    Вообщем на описание сценария из 15 последовательных страниц, ожидание запуска теста и ожидание самих результатов ушло порядка полутора часов, в результате я получил графики типа
    image
    На этом графике показывается как терзалась система — в моем случае максимально было 47 пользователей — и чуть более 3-ех запросов в секунду
    Ну и самый интересный
    image
    Из которого следует — что если исключить максимальный пик в 5 секунд (в этот момент решил включиться Garbage Collector) — в остальном приложение вело себя хорошо — и не зависимо от количества пользователей — то есть — нагрузка в 50 пользователей сайт не нагружает — есть еще и запас хороший.

    Понятно — что такое тестирование не совсем «серьезное» по выдаваемым результатам, да и 50 одновременных пользователей — нельзя назвать серьезной нагрузкой, но, учитывая потраченное время (полтора часа) и деньги (0 руб) — результат вполне адекватный. По крайней мере мы убедились что если с производительностью есть какие-то проблемы — в ближайшие месяцы мы ее все-таки не увидим

    Чуть подлинней и подороже


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

    Все, удачи, счастливых хаброэффектов!
    Метки:
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 40
    • +6
      Запостить обзор на хабре и наблюдать за результатом, который скорее всего дойдет до падения сервера.
      • +1
        скорее всего? Что-то мне не верится.
        • 0
          а я выдержал когда то в июне. 58 ребят одновременно заинтересовались блогом
          • +1
            58 — это далеко не харбраэффект… ^_^ Придумайте идею интереснее, анонсируйте проект на Хабре и можете засекать с секундомером, сколько протянет Ваш сервер)
            • 0
              есть куча идей. средств и единомышленников устал искать. как часто встречается фраза на хабре «никто не заинтересован в стартапе, если первые дивиденды будут не ранее чем через 3 года»
              • 0
                58 — это далеко не харбраэффект… ^_^ Придумайте идею интереснее, анонсируйте проект на Хабре и можете засекать с секундомером, сколько протянет Ваш сервер)


                но все же первое и маааленькое, но достижение. =)
              • 0
                Как показала практика — коммент со ссылкой — это 100-150 уников в первые сутки и 50-100 во вторые, а вот интересный пост и правда может сгенерить несколько тысяч, а то и десятков тысяч, основная масса коих придётся на момент выхода топика на главную.
          • +1
            спасибо за пост, перенесите его плиз в блог высокой нагрузки
            • +3
              Если совсем по быстрому — то это Load Impact

              Ага, как бы этот сервис по-быстрому второй раз не накрыть хабраэффектом, а то на днях они и так уже получили порцию :)))
              • 0
                Хех!
                Смотрю LATEST FREE TESTS
                Дык все почти на .ru :)
              • +1
                есть ещё одно приложение, которое я использовал для нагрузочного тестирования в рамках локальной сети. Бесплатно оно работает до 30 дней, с возможностью имитации 10 пользователей (или больше, уже точно не помню). Если запускать тест с нескольких компов, то можно добиться желаемого хЭффекта.
                Название — WAPT

                Есть возможность генерировать запросы к формам.
                В конце теста можно посмотреть графики и т.п. и т.д.
                • +1
                  блин, у меня все упирается в ширину канала :) поэтому не могу объективную проверку конфигурации системы сделать :( PS. чем можно канал потестить из консоли?
                  • 0
                    iperf
                    • –1
                      iperf
                      • +1
                        Мда, страничку нужно обновлять, перед тем как постить :)
                    • 0
                      Спасибо, думаю будет полезно для теста маленьких shared hosting проектов
                      • +1
                        Хороший сервис, я пробовал воспользоваться бесплатным вариантом(одновременно до 50 пользователей) для оценки производительности моего веб-сайта, написанного на Grails
                        • +2
                          Интересно, сколько народу зайдет на loadimpact.com и введет адрес Хабры.
                          • +1
                            Хотя уже:
                            This configuration contains addresses that has been tested too many times the last 24 hours. The offending domain was: habrahabr.ru
                          • +2
                            Я использовал curl-loader.
                            Это написанное на C консольное приложение, которое эмулирует работу пользователей на сайте по написанному сценарию. Может логиниться, посылать формы. Легко запустить на нескольких компьютерах. В конце работы выводит табличку со статистикой по каждому запросу.

                            Единственное, что оно просто скачивает странички, т.е. не трогает css, js, картинки, если их загрузка не включена в конфиг (я написал конфигуратор, который сделал это для меня).
                            • +1
                              JMeter в туже степь — только наверное все-таки мощнее

                              Но эти все утилиты требуют скачивания, установки, настройки, написания скриптов — не всегда интуитивно понятное.

                              То есть — в полтора часа даже на простенький тест — вряд ли получится уложится
                              • +1
                                У меня много времени ушло на поиск утилиты.
                                Настройка curl-loader заняла гораздо мнеьше времени, чем полтора часа.
                                В нём есть готовый конфиг, в котором я раскопировал секцию определения ссылки для захода пользователя и зменил URL на свои.

                                Хватило прочтения
                                curl-loader.sourceforge.net/doc/fast.html
                                и
                                curl-loader.sourceforge.net/doc/faq.html#conf-file-details

                                Впрочем, каждый выбирает по себе.
                            • 0
                              loadimpact.com/result/reborn.ru-838e0cd4d05105030a0fdb36013ae032

                              я хз как и че они там тестируют — мы даже не заметили.
                              и без них 120 req/sec с утра, к вечеру будет больше.
                              • 0
                                да я те говорю гон какой то

                                loadimpact.com/result/maxyc.ru-d323c68b5dd14d36446f0041b0491702

                                вот лог вордпресса
                                gyazo.com/03837abda3c86c0e1002b42f60ded575.png

                                вот лог лоадимпакта во время работы (как минимум 1 подключение есть. а лог не то что гостя. даже бота не заметил)
                                gyazo.com/fb381d1bfbe4d0c4094ceb94b55ed375.png

                                поглядел данные из webalizer. тот надо мной поржал и сказал «самдурак. никого здесь не было.»
                                • 0
                                  У меня в обоих случаях — и тестировании LoadIMpact-ом и LoadStorm-ом — Google Analytics их никак не отобразил
                                  Но LoadStorm сервер точно грузил
                                  • 0
                                    Google Analytics и не должен считать ботов, он реагирует только на браузеры со включенным JS
                                • +1
                                  На ЛоадИмпакте есть небольшой хелп с расшифровкой графиков.
                                  Если у вас график плоский — значит приложенная нагрузка «не нагрузила» сайт — есть еще свободные ресурсы.
                                  Это ине удивительно — в LoadStorm-е 50 пользователей генерили чуть более 3-ех запросов в секунду (тут я думаю столько же примерно) — если у вас 120 запросов в секунду — это норма — то вам эти тестовые 50 пользователей — как слону дробина.

                                  Раскошелитесь на 5000 одновременных пользователей — тогда может и увидите для себя что-то интересное
                                  • 0
                                    нам столько не грозит. 15к уников в сутки — это немного вообще. По основному адресу около 2м запросов в сутки, что около 20 запросов в сек в среднем, хотя конечно ночью можно сказать нет никого, а днем и под вечер до 200 доходит. Это я не считал правда субдомены, форум и тяжелый контент — только скрипты и оформление.
                                • 0
                                  Очень интересно было прочитать… ) давно-давно когда приходилось оценивать максимальную нагрузку на сайт использовал OpenSTA… :) с тех пор появилось много вкусного :)
                                  Спасибо за просветление :)
                                  • +2
                                    интересно, loadimpact снова упадет? :)
                                    • +2
                                      Вот еще полезная утилита: acme.com/software/http_load/
                                      Ну и конечно, ab.
                                      • 0
                                        Когда то пытались использовать Liferay в одном довольно крупном прокте, тогда нагружали его с помощью http_load — простой утилитки, которая тянет список урлов с заданной частотой заданное время. Результаты были плачевные для Liferay.
                                        Я конечно очень надеюсь, что сейчас с этим движком все намного лучше, но год назад при тестировании мы выявили, что 90% времени он занимается парсингом XML — там все строки, даже надпись OK на кнопке где нибудь в интерфейсе, хранились как XML документы в БД в поле типа TEXT, сделано это было для поддержки i18n, и каждый раз когда выводилась любая строка — она запрашивалась из БД, XML парсился и выводился
                                        • +1
                                          из-за чего и решили погонять сейчас. В текущей версии (5.2.3) все ресурсы точно не в базе (в properties-файлах как и положено), 50 одновременных пользователей портал запущенный на самом маленьком амазоновском инстансе держал без проблем и без серьезной загрузки — так что и больше должен держать.

                                          Видимо все-таки учли ошибки
                                        • +2
                                          Почему бы не упомянуть о классике нагрузочного тестирования? HP LoadRunner на высоте по всем характеристикам, кроме цены)
                                          • +3
                                            У нас на работе еге как раз и используют — но это относится (имхо) к «серьезному» и «правильному» тестированию — но, оно требует (как вы правильно заметили) других денег и другого времени
                                          • 0
                                            Вы уж товарищи простите конечно, но! Ваш сценарий теста можно написать и на Jmeter с проксей быстрее чем за час. Да и пользователей выставить значительно больше. Какая то странная боязнь таких инструментов пошла…
                                            • +1
                                              С нуля у меня час ушел на только на то что-бы скачать поставить JMeter и дернуть одну страницу.
                                              Пользователей можно и 1000 поставить — только дергать 1000-ю пользователями с одного компа по моему бесполезно — все может упереться в канал на стороне клиента — а тот же LoadStorm по крайней мере утвержждает что они с разных источников дергают (хотя не проверял)
                                              • +2
                                                из крайности в крайность? между 50 и допустим 200 разница уже будет огромной. По поводу канала на стороне клиента посмотрите Jmeter Remote Testing.
                                                P.S. Вашу позицию понял, но ее не разделяю :)
                                            • 0
                                              В таком случае еще можно использовать Siege, в файл можно добавить список страниц которые нужно обойти, плюс включить переход по случайным страницам
                                              • 0
                                                hint as Captain Obvious: Load Impact и LoadStorm запущенные одновременно дают 50+50 пользователей одновременно. Правда, с графиками тяжелее приходится. Но мы же о халяве за полтора часа?

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