Обложка канала

ServerAdmin.ru

12437 @srv_admin

Авторская информация о системном администрировании.

ServerAdmin.ru

3 года назад
Открыть в
​​Для нагрузочного тестирования сайтов существует много готовых инструментов. Но когда речь заходит о чём-то более сложном, чем простые get запросы к каким-то урлам, ситуация резко меняется. Первым делом на ум приходит популярный JMeter, но взять и сразу написать для него сценарий доступно не только лишь всем. Компромиссом в этом вопросе может выступать Locust. Это известная утилита для нагрузочного тестирования, написанная на Python. Тесты для неё тоже пишутся на этом же языке, то есть вы ничем не ограничены в своих фантазиях на тему сценариев. А так как пайтон прост как для восприятия, так и написания кода, использовать её не сложно. Я быстро по документации разобрался, как это сделать. Locust ставится из pip и имеет встроенный веб сервер для запуска тестов и просмотра результатов, поэтому никакой особой настройки не требует. Устанавливаем: # apt install python3-pip # pip3 install locust Теперь надо подготовить сценарий для тестирования. В самом простом случае он выглядит вот так: from locust import HttpUser, task class TestUser(HttpUser):   @task   def test01(self):     self.client.get("/")     self.client.get("/forum") self.client.get("/about") Здесь мы просто шлём запросы на три урла: /, /forum, /about. Запускаем locust: # locust -f locustfile.py И отправляемся в браузер для запуска теста с указанными параметрами и просмотра статистики - http://0.0.0.0:8089. В документации подробно разобран формат файлов сценария с готовыми примерами. А так как программа известная, в гугле легко найти много готовых примеров с авторизацией, куками, задержками, возрастанием нагрузки и т.д. Locust в первую очередь хорош для автоматизации тестирования, во-вторую, для мониторинга. Для него есть готовый exporter для Prometheus. Вы можете регулярно запускать тесты и мониторить результаты. Вот хороший пример по этой теме (тесты api и отправка результатов в prometheus). Аналоги Locust: ◽ artillery.iok6yandex.tankTaurusСайт / Исходники #нагрузочное_тестирование