Статьи

Стресс-тестирование с Loader.io

loaderio-логотип

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

Я технический директор футбольной / футбольной социальной сети в Бразилии. Мягко говоря, футбол очень популярен в моей стране. Этим летом мы сфокусировали наш маркетинг на чемпионате мира, подготовив наше приложение для поддержки как можно большего числа пользователей. Чтобы сделать это, нам пришлось тестировать и улучшать, но как мы можем загрузить тест? Какой инструмент мы должны использовать? Это только некоторые вопросы, которые возникли, когда мы начали решать эту проблему.

Это когда мы нашли Loader.io .

Откуда это?

Loader.io — сервис стресс-тестирования. Это не просто инструмент, так как он помогает вам сосредоточиться на том, что тестировать. Он разработан SendGrid и описывает сервис следующим образом:

Loader.io — бесплатный сервис для нагрузочного тестирования, который позволяет провести стресс-тестирование.
ваши веб-приложения / API с тысячами одновременных подключений.

Как настроить

Loader.io пытается симулировать пользователей и их влияние на ваше приложение, а не фокусироваться на коде. Это дает более реалистичный результат, но это не руководство, показывающее, на чем вы сосредоточены для повышения производительности. Loader.io обнаружит проблемы с масштабированием, но вам нужно найти решение. В нашем случае результаты были убедительными, и мы смогли выследить наши проблемы масштабирования.

Перво-наперво, вам нужен аккаунт на Loader.io (не беспокойтесь, они не будут заполнять ваш почтовый ящик). При регистрации вам нужно выбрать план, и бесплатный будет работать для ваших первоначальных потребностей.

После создания учетной записи Loader.io попросит вас подтвердить свой домен. Они могут даже помочь вам, если вам это нужно.

Пользователи Heroku защищены, Loader.io это плагин, который делает использование сервиса очень простым.

Ваш первый тест

Как только вы добавили Loader.io в свое приложение, используйте веб-интерфейс, чтобы добавить свой первый тест:

Loader.io interface

Есть несколько простых вариантов настройки теста. Интерфейс покажет вам сценарий, который лучше всего соответствует вашим потребностям:

  • Клиентов на тест (Клиенты будут распределены равномерно на протяжении всего теста.)
  • Клиентов в секунду (Клиенты будут запускаться каждую секунду)
  • Поддерживать нагрузку на клиента (постоянное количество клиентов будет поддерживаться в течение всего периода тестирования.)

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

Когда готов первый тест, Loader.io запустит его и отобразит результаты. Весь процесс прост, а результаты легко понять. Я немного пробежусь по результатам теста.

Стресс-тест как культура

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

Я вижу Loader.io как способ сделать стресс-тестирование более распространенной практикой для разработки приложений. Помимо всего, что я пока показал, одной из лучших функций Loader.io является его API. Это позволяет интегрировать ваши тесты в процедуру развертывания. Это серьезная победа, помогающая поддерживать качество и производительность вашего кода на высоком уровне и ориентироваться на масштабируемость.

Пример реального случая

Вот мои первые результаты тестов после того, как я решил, что пришло время провести стресс-тестирование нашей заявки на чемпионат мира (разумеется, после этого я очень переживал):

Loader.io first result

Результаты Loader.io показали, что, когда 15 запросов поступают в одну и ту же минуту (1 для каждых 4 ”), только 3 получили ответы . Среднее время каждого ответа составляло 9456 мс (точнее 9,5 секунд) . Хлоп!

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

Я не спал 3 ночи, но результаты были потрясающими. Это результат теста через 3 дня после первого:

Loader.io first result

Вместо 15 запросов в минуту, на этот раз было 300 запросов (по 5 на каждую секунду) . Теперь приложение имело 299 успешных ответов, со средним временем ответа 627 мс . Да, это было потрясающе.

Заворачивать

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

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