Стресс-тест веб-фреймворка [РЕШЕНО]
Здравствуйте!
Обращаюсь с вопросом к сообществу, так-как не имею необходимого опыта.
В рамках изучения newLISP создал фреймворк, и прикрутил его к серверу lighttpd.
Фреймворк создавал для собственных нужд и с ним проблем пока нет, а вот дабы узнать насколько шустро работает newLISP я провел стресс-тест фреймворка с машины из локальной сети программой siege:
user$ siege -c 100 -i -r 1000 -t10m -f ./urls.txt Lifting the server siege... done. Transactions: 15961 hits Availability: 99.82 % Elapsed time: 600.02 secs Data transferred: 226.50 MB Response time: 3.16 secs Transaction rate: 26.60 trans/sec Throughput: 0.38 MB/sec Concurrency: 84.11 Successful transactions: 15966 Failed transactions: 29 Longest transaction: 122.14 Shortest transaction: 0.02
Собственно вопрос, а что показывают эти цифры?
Transactions – количество обращений к серверу. В данном случае 100 пользователей [ -c 100 ] запустивших по 1000 обращений [ -r 1000 ], что в общей сумме должно составить 100000.
Elapsed time – общая продолжительность тестирования, вполне укладывается в 10 сек [ -t10m ].
Data transferred – суммарное количество данных переданное всеми имитируемыми пользователями. Оно включает в себя как тела запросов, так и их заголовки.
Response time – среднее время за которое сервер успел ответить клиенту.
Transaction rate – среднее число обращений которые сервер успел обработать за секунду. Оно получается путём деления общего числа запросов на затраченное время.
Throughput – среднее число данных передаваемых ежесекундно от сервера к пользователям.
Concurrency – количество одновременных подключений при которых сервер отвечает без задержек.
Successful transactions – количество запросов на которые сервер ответил кодом меньше 400.
Хорошо это или нет? Может кто проводил подобные тестирования, или есть какая-то методика?
В общем буду благодарен за любую информацию.
/*****************************************************************************************************************/
Огромное спасибо человеку под ником krigstask, с его подачи мозги встали на место ;-)
А теперь, как и обещал, методика и результаты тестирования фреймворка:
Тестирование проводилось программой siege, с целью оценить работоспособность веб-фреймворка написанного на newLISP.
Характеристики подопытного сервера:
Железо: Ноутбук Dell Inspiron Процессор Pentium-M 1.6 ОЗУ 512Mb Сеть Wi-Fi Софт: OS CLDG-11.12 Веб-сервер lighttpd 1.4.30-r1 newLISP 10.4
Тестирование проводилось по такой методике:
С отдельного компьютера в локальной сети, при помощи программы siege, имитировалось подключение к веб-серверу нескольких десятков пользователей - 50, 200 и 500. Имитация каждого количества пользователей проводилась по три раза, потом вычислялась средняя величина полученных результатов.
Тестирование проходило в три этапа по приведенной выше методике:
1) Вычислялись характеристики веб-сервера lighttpd при отдаче им статичной страницы default.html (голый html);
2) Веб-сервер запускал newLISP в режиме CGI, последний в свою очередь отдавал клиенту строку - "Test newLISP";
3) Веб-сервер, опять-же в режиме CGI, посредством фреймворка формировал полноценную веб-страницу (со стилями и оформлением) и отдавал клиенту;
siege http://192.168.0.140 -d1 -t1m
Ниже представлены обобщенные результаты тестирования:
|--------------------------|--------------------------------------------------------| |1) lighttpd | -c 50 | -c 200 | -c 500 | |--------------------------|--------------------------------------------------------| |Transactions: | 4422 hits | 7403 hits | 7172 hits | |Elapsed time: | 59.86 secs | 60.09 secs | 60.32 secs | |Data transferred: | 2 MB | 4 MB | 3.66 MB | |Response time: | 0.16 secs | 1.04 secs | 2.92 secs | |Transaction rate: | 73.89 trans/sec | 123.18 trans/sec | 118.9 trans/sec | |Throughput: | 0.03 MB/sec | 0.07 MB/sec | 0.06 MB/sec | |Concurrency: | 12.02 | 128.4 | 346.59 | |Successful transactions: | 4422 | 7403 | 7172 | |Failed transactions: | 0 | 4 | 67 | |--------------------------|--------------------------------------------------------|
lighttpd отдает статику довольно быстро, но сравнивая пункты:
Transactions и Concurrency
становиться видно, что 500 виртуальных пользователей - это много,
причем, видимо, для всей локальной сети в целом.
Siege при [- c 500] выдает что-то не совсем вразумительное.
|--------------------------|--------------------------------------------------------| |2) newLISP | -c 50 | -c 200 | -c 500 | |--------------------------|--------------------------------------------------------| |Transactions: | 1302 hits | 1310 hits | 1122 hits | |Elapsed time: | 59.87 secs | 60.04 secs | 60.08 secs | |Data transferred: | 23.66 MB | 23.66 MB | 19.66 MB | |Response time: | 1.55 secs | 5.64 secs | 14.19 secs | |Transaction rate: | 21.74 trans/sec | 21.82 trans/sec | 18.67 trans/sec | |Throughput: | 0.39 MB/sec | 0.39 MB/sec | 0.32 MB/sec | |Concurrency: | 33.74 | 122.97 | 264.15 | |Successful transactions: | 1302 | 1310 | 1122 | |Failed transactions: | 5 | 33 | 104 | |--------------------------|--------------------------------------------------------|
Сравнивая результаты проведенных тестов, я конечно немного растерялся.
При [ -c 50 ] видно (пункт Response time), что на запуск newLISP у сервера уходит
примерно по 1 сек. на каждый запрос, соответственно понизилось значение
пункта Transactions примерно в 7 раз, если сравнивать с аналогичным показателем
1-го теста, и это понятно. Но почему выросло сумарное количество переданных данных
(пункт Data transferred), если в отличие от статичной страницы из 1-го теста,
в этом тесте newLISP отдавал клиенту только одну короткую строчку?
Да и пункт Concurrency слегка настораживает?
|--------------------------|---------------------------------------------------------| |3) фреймворк | -c 50 | -c 200 | -c 500 | |--------------------------|---------------------------------------------------------| |Transactions: | 3641 hits | 3764 hits | 3888 hits | |Elapsed time: | 60.11 secs | 59.95 secs | 60.16 secs | |Data transferred: | 10.66 MB | 11 MB | 11.33 MB | |Response time: | 0.31 secs | 2.15 secs | 4.16 secs | |Transaction rate: | 60.57 trans/sec | 62.79 trans/sec | 64.62 trans/sec | |Throughput: | 0.17 MB/sec | 0.18 MB/sec | 0.19 MB/sec | |Concurrency: | 18.85 | 135.1 | 269.07 | |Successful transactions: | 3641 | 3764 | 3888 | |Failed transactions: | 0 | 9 | 161 | |------------------------------------------------------------------------------------|
Что тут сказать? Судя по цифрам фреймворк работает достаточно шустро и ровно
на всех имитируемых нагрузках, что конечно радует. Но по результатам 2-го теста
в душу закрался червь сомнения в корректности измерений производимых программой siege
Лично я не удовлетворен, и продолжу поиски вариантов тестирования фреймворков.
Буду рад если кому-либо пригодится приведенный материал.
- Для комментирования войдите или зарегистрируйтесь
Если Гугл вам заблокировали,
Если Гугл вам заблокировали, смотрите сюда :)
Спасибо
Спасибо, я эту информацию уже видел. Попробую немного развернуть вопрос.
1) У меня нет под рукой другого рабочего веб-сервера, с заведомо удовлетворительной его работой, поэтому провести сравнение не могу.
2) Объяснений, как проводил тестирование, например, user - Вася, какие результаты он получил, и что эти результаты могут рассказать о характеристиках подопытного веб-сервера, у Гугла я не нашел. Все сводится к банальному описанию, как запустить siege и какие у программы есть параметры.
Но я же наверное не один, кто задался таким вопросом. Поэтому и спрашиваю у сообщества подсказки.
Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...
Сервер серверу - рознь! Не
Сервер серверу - рознь!
Не зная вашего ТЗ, невозможно ответить на ваш вопрос.
Ясно ведь, что для сервера мерии Урюпинска хорошо, то для сервера BBC - out of service... :)
Сервер - Серверу рознь, это я
Сервер - Серверу рознь, это я понимаю ;-)
У меня сервер запущен на моем ноуте, чисто с целью создать фреймворк с помощью newLISP.
У ноута характеристики: core2duo 1.8 с 2G оперативки
Тестирую с другого ноута: pentium-m 1.6 с 512М оперативки
Если задать например такой запрос:
То ноут, с которого пытаюсь проводить тестирование "выпадает в осадок", у него кончается оперативка.
Во всех случаях тестирования, ноут с веб-сервером на борту даже не замечает нагрузки, разве что вентилятор немного начинает жужать.
Собственно в связи с происходящим и возник вопрос, что показывают результаты тестирования?
Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...
В принципе, если эти цифирки
В принципе, если эти цифирки вам ничего не говорят, то они вам и не нужны! Веб-сервер работает - и радуйтесь... параллельно читая доки по веб-технологиям, пока не станет ясно назначение этих параметров. Между прочим, кое-что обсуждалось по ссылке, что я дал уже, подробнее - тут.
Еще раз спасибо за ссылку. А
Еще раз спасибо за ссылку.
А вот по поводу "Веб-сервер работает - и радуйтесь...", как бы сказать по мягче, немного неприятно читать.
Если я обратился к сообществу с вопросом, это не означает, что студен-двоечник, просто для меня это что-то новое, что я хочу изучить подробно.
Вот например (предварительно) интересный сайт.
А заставить "кое-как" работать, это не для меня извините.
Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...
Если речь пошла про сайт
Если речь пошла про сайт тестировщиков, то не могу не поделиться ещё одним интересным сайтом по тестированию.
И я тоже из тех, кто подходит к любому вопросу основательно, поэтому Ваш подход к делу мне близок.
тестирования siege
тестирования siege проводится не с целью публикации цифирек на ЛОРе и сбора восторженных комментов , а с целью
1) доказательства того, что сервер отвечает/не отвечает требуемым в ТЗ характеристикам
2) определение того предела, за которым наступает деградация производительности.
3) для сбития спеси и уменьшения ЧСВ владельцев сайтов и пхп быдлокодеров
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Спасибо, в принципе я так и
Спасибо, в принципе я так и предполагал, хотелось только убедится.
Подвожу итог:
1)Инструмент типа siege, по "большому" счету, предназначен для пускания пыли в глаза заказчику веб-сервера.
2)Полноценное тестирование фреймворка, возможно только комплексными инструментами, создающими извне нагрузку определенного вида, и одновременно проводящими мониторинг на стороне сервера.
Если не у кого нет дополнений, то тему думаю можно закрывать.
Спасибо всем кто откликнулся.
Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...
итог : бред
итог : бред
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
slepnoga написал(а): итог :
Видимо "устал наш воспитатель", для чего столь глубокомысленное замечание?
Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...
На заметку
Вот хорошая презентация.
Осторожно - трафик!
Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...
Подход к тестированию
Подход к тестированию странный.
А ваши цифры показывают что используемая связка фреймворк+сервер неспособна обслужить одновременно 100 пользователей с приемлемым временем ответа. Не больше, не меньше.
Тестирование чего
Тестирование чего проводится-то? Железа ноутбука? Сервера lighttpd? Или всё же фреймворка новорожденного? Если всё-таки последнее, то надо накропать пяток как можно более похожих helloworld'ов на Flask, Ruby on Rails, Django… Прогнать siege и посмотреть, что к чему. Для сравнения можно провести замер отдачи статики.
Вот так вот, например: http://www.alrond.com/ru/2007/jan/25/rezultaty-testirovanija-6-frameworks/
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Не отвлекай человека от
Не отвлекай человека от поисков "комплексных инструментов, создающими извне нагрузку определенного вида, и одновременно проводящими мониторинг на стороне сервера." :)
Спасибо за сарказм
Надеюсь вы согласитесь, что:
1) Сервер отдающий статические веб-страницы "шуршит" быстрее, чем тот который их собирает динамически;
2) Если фреймворк использует базу, например MySQL, то далеко не факт, что тормозит логика фреймворка а не база;
3) Если у клиента страничка открывается длительное время, это не показатель "тормозов" фреймворка;
4) Очень плохо когда веб-серверу не хватает ресурсов, но так-же "ни есть гуд" когда часть ресурсов не используется;
5) Если мы не тестируем свои программы, сервера, базы данных, тогда грош цена нам как специалистам;
6) Не все "велосипеды" еще изобретены;
Возражения прошу аргументировать.
Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...
Большое спасибо! То что
Большое спасибо!
То что нужно. Изучу и отпишусь подробнее.
Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...