HTTP ТАНК И ЯНДЕКС ТАНК И АВТОМАТИЗАЦИЯ НАГРУЗОЧНОГО ТЕСТИРОВАНИЯ

HTTP ТАНК И ЯНДЕКС ТАНК И АВТОМАТИЗАЦИЯ НАГРУЗОЧНОГО ТЕСТИРОВАНИЯ World of Tanks

Your browser does not support the video tag.

Обновление системы контейнеров

Осенний фестиваль 2023

Вызов принят Сентябрь II 2023

Winter Major Rankings III 2023

21 сентября, 2023

16 сентября, 2023

Запрос в техподдержку

К вашему аккаунту не привязана электронная почта. Чтобы отправить запрос в техническую поддержку, привяжите email.

Привязать электронную почту можно в разделе «Аккаунт» настроек игры. Вам понадобится подтвердить привязку указанной почты.

Ваш запрос в поддержку принят. Служба поддержки свяжется с вами в ближайшее время.

О нас и Cookie-файлах

Согласие на обработку cookie-файлов

Мы используем cookie-файлы для аутентификации, обеспечения вашей безопасности, учета ваших предпочтений, маркетинга, анализа производительности и аналитики. Мы также обмениваемся информацией об использовании вами наших сайтов с партнерам по маркетингу и аналитике. Наши партнеры могут объединять полученные данные с другой имеющейся у них информацией.

Если вы авторизовались на наших ресурсах, cookie-файлы помогают нам показать вам правильную информацию и персонализировать ваш опыт.

Мы используем cookie-файлы для включения и поддержки наших функций безопасности и для того, чтобы помочь нам обнаружить вредоносную активность.

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

Мы можем использовать cookie-файлы или аналогичные технологии, для осуществления маркетинговых кампаний и отслеживания их эффективности. Аналогичным образом наши партнеры могут использовать cookie-файлы, чтобы предоставить нам информацию о ваших взаимодействиях с их услугами и тегами действий для измерения эффективности рекламы и обеспечения более эффективной адресной рекламы, использование этих сторонних cookie-файлов будет подчиняться политикам конфиденциальности поставщиков рекламных услуг.

Производительность, аналитика и исследования

Cookie-файлы или похожие технологии помогают нам узнать, насколько хорошо работают наши ресурсы и Игры. Мы также можем использовать cookie-файлы или подобные технологии для понимания, улучшения и исследования продуктов, функций и сервисов, в том числе для создания логов и записей при осуществлении доступа к нашим сайтам и ресурсам с разных устройств, таких как ваш компьютер или мобильное устройство.

Про WoT:  Ноябрьская акция предлагает подключение к базовому тарифу и выгодный стартовый бонус для подписчиков Яндекс Плюс, заинтересованных в Word of Tank и World of Tanks

Сохранить настройки и согласиться

Яндекс. Танк и автоматизация нагрузочного тестирования

Время на прочтение

В ходе тестирования некоторых продуктов компании Positive Technologies возникла необходимость проведения быстрых стресс-тестов одного веб-сервиса. Эти тесты должны были быть простыми и быстрыми в разработке, нетребовательными к аппаратным ресурсам и одновременно с этим давать значительную нагрузку однотипными HTTP-запросами, а также предоставлять статистические данные для анализа системы под нагрузкой.

Для их реализации мы исследовали и опробовали некоторое количество инструментов, среди которых были Apache JMeter и написанный нами на Python скрипт LogSniper, который выполнял реплей заранее подготовленных серверных логов с HTTP-запросами на цель.

От использования JMeter было решено отказаться из-за значительной сложности подготовки и проведения тестов, высоких требований к производительности нагрузочного стенда и довольно малых мощностей нагрузки, хотя эти недостатки и компенсировались высокой информативностью собираемой статистики. LogSniper был отклонен из-за малой мощности генерируемой нагрузки и здесь даже простота подготовки нагрузочных HTTP-пакетов не смогла перевесить. Другие известные инструменты нам по тем или иным причинам тоже не подошли.

В итоге мы остановились на инструменте Яндекс. Танк, о котором узнали, побывав на конференции YAC-2013 и пообщавшись со специалистами Яндекса. Этот инструмент полностью отвечал всем нашим требованиям к простоте подготовки теста и к генерируемой нагрузке.

Что это

Яндекс. Танк — инструмент для проведения нагрузочного тестирования, разрабатываемый в компании Яндекс и распространяемый по лицензии LGPL. В основе инструмента лежит высокопроизводительный асинхронный генератор нагрузки phantom: он был переделан из одноименного веб-сервера, который «научили» работать в режиме клиента. При помощи phantom можно генерировать десятки и сотни тысяч HTTP-запросов в секунду (http-requests per second, http-rps).

Про WoT:  Стоит ли выкачивать FV215b (183) World Of Tanks Blitz? | Пикабу

В процессе своей работы Танк сохраняет полученные результаты в обычных текстовых журналах, сгруппированных по директориям для отдельных тестов. Во время теста специальный модуль организует вывод результатов в консольный интерфейс в виде таблиц. Одновременно запускается локальный веб-сервер, позволяющий видеть те же самые результаты на информативных графиках. По окончании теста возможно автоматическое сохранение результатов на сервисе Loadosophia.org. Также имеется модуль загрузки результатов в хранилище Graphite.

Некоторые полезные ссылки:

Сегодня мы не будем подробно останавливаться на установке и настройке Танка, поскольку эту информацию легко найти в сети, а сразу перейдем к описанию своего опыта его использования.

Сравнение производительности двух аналогичных веб-сервисов

В ходе работы нам потребовалось сравнить характеристики двух веб-сервисов, работу которых можно примерно описать как «прозрачные HTTP-прокси, перенаправляющие входящие запросы на backend-приложение».

Общую схему работы можно изобразить следующим образом:


HTTP ТАНК И ЯНДЕКС ТАНК И АВТОМАТИЗАЦИЯ НАГРУЗОЧНОГО ТЕСТИРОВАНИЯ

На стенде с Танком использовался генератор нагрузки phantom с включенным монитором производительности.

В качестве стенда web-proxy на схеме использовались два тестируемых веб-сервиса, с которых при помощи агента Танка снимались показатели производительности. Условно назовем их Эталонный веб-сервис и Испытуемый веб-сервис. Нам требовалось понять, соответствует ли производительность испытуемого веб-сервиса эталонному.

Для backend использовалось небольшое веб-приложение, запущенное под Nginx и возвращающее одну простую HTML-страничку.

Выявленные ограничения

Перед началом работ мы собрали информацию об ограничениях виртуальных стендов, на которых была построена вся тестовая инфраструктура.

Характеристики стенда backend-приложения:

Максимальная отдача сервера, которой удалось добиться, составила ~ 25 000 http-rps, но и при нагрузке выше 25k http-rps работа стенда не была нарушена.

Стенд Танка с характеристиками 16 vCPU, 8 GB, 10 Gb/s позволил реализовать нагрузку до 300 000 http-rps.

Пропускная способность виртуальной среды ESXi, определенная с помощью Iperf, составила 8 Gb/s в одну сторону, 4 Gb/s при двухсторонней нагрузке между двумя виртуальными машинами.

Метрики и критерии сравнения

Перед началом работы для дальнейшего измерения мы определили следующие метрики каждого профиля нагрузки:

Зная число HTTP-запросов и их размер, получаем, что bs и http-rps связаны по формуле: bs = http_rps * http_request_size.

Про WoT:  Как можно оплатить ворлд оф танк

В данном случае мы решили выбрать следующие критерии для сравнения работы веб-сервисов под нагрузкой:

Аналогичным образом можно определить иные критерии нагрузочных тестов для любых проектов.

Тестовые HTTP-запросы

Для одного из профилей нагрузочных тестов нам требовалось создать смешанный HTTP-трафик из GET- и POST-запросов с линейным возрастанием нагрузки до 10k http-rps в течение 10 минут.

HTTP-запросы, вошедшие в патрон Яндекс. Танка

Чтобы упростить подготовку патрона для такого смешанного трафика, мы сделали скрипты, аналогичные perl-скриптам, предлагаемым на форуме.

Сбор данных и анализ результатов

После подготовки запросов мы просто запустили Танк стандартным образом и выполнили нагрузочный тест со смешанным трафиком для обоих тестируемых веб-сервисов.

Результаты для эталонного веб-сервиса

Информация веб-монитора Танка:


HTTP ТАНК И ЯНДЕКС ТАНК И АВТОМАТИЗАЦИЯ НАГРУЗОЧНОГО ТЕСТИРОВАНИЯ

Информация консоли Танка:


HTTP ТАНК И ЯНДЕКС ТАНК И АВТОМАТИЗАЦИЯ НАГРУЗОЧНОГО ТЕСТИРОВАНИЯ

Результаты для испытуемого веб-сервиса


HTTP ТАНК И ЯНДЕКС ТАНК И АВТОМАТИЗАЦИЯ НАГРУЗОЧНОГО ТЕСТИРОВАНИЯ

HTTP ТАНК И ЯНДЕКС ТАНК И АВТОМАТИЗАЦИЯ НАГРУЗОЧНОГО ТЕСТИРОВАНИЯ

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

Выводы

По результатам работы с Яндекс. Танком можно с полной ответственностью заявить, что этот инструмент отлично подходит в тех случаях, когда требуется быстро провести нагрузочное тестирование веб-приложений без их сложной подготовки и при этом получить множество полезных статистических данных для анализа производительности.

Кроме того, он хорошо внедряется в имеющиеся системы автоматизации. Например, для упрощения работы со стендом Танка — управления, запуска, подготовки патронов для лент, контроля за процессом тестирования и сбором результатов — мы без особых усилий написали класс-обвязку на Python, который подключается к стенду по SSH и выполняет все перечисленные действия. Затем этот класс был встроен в нашу существующую систему авто-тестирования.

Дополнительно вы можете посмотреть, как подключить и использовать высокопроизводительную систему Graphit для анализа большого числа графиков (о ней рассказывалось в одной из презентаций на конференции YAC-2013). Ее также можно приспособить для нужд нагрузочного тестирования с использованием Яндекс. Танка.

Выражаю благодарность моему коллеге Олегу Каштанову за техническую поддержку.

Оцените статью
TankMod's
Добавить комментарий