Нагрузочное тестирование Redis |
25.06.2025 00:00 |
Я собираюсь объяснить, как можно измерить производительность Redis. Об этом уже написано множество статей, но я хочу поделиться своим опытом, опытом DevOps-инженера. Я также хочу рассказать о методах, которые внедряются в нашей компании. Итак, нагрузочное тестирование чего, зачем? Первое, что приходит в голову – это вопрос, зачем нам нагрузочное тестирование? Наше окружение и так хорошо работает? Или оно хорошо работало с первого же запуска. Но вот что я вам скажу – все не так просто, потому что у всего есть пределы, и знание этих пределов часто может вам помочь. Если мы не готовы встретить повышенную нагрузку во всеоружии, наше окружение может запросто нас подвести. Как говорится, «Искры туши до пожара, беду отводи до удара» Проще говоря, легче предотвратить что-то плохое, чем чинить все после того, как ущерб уже нанесен. Итак, когда я решил протестировать производительность Redis, начать было не так-то просто – в мире множество фреймворков нагрузочного тестирования, но какой же выбрать? Я сравнил различные нагрузочные фреймворки. Jmeter – популярный инструмент нагрузочного тестирования – был в доступе, но его, с моей точки зрения, сложновато легко и быстро изучить, и он также требует кучи ресурсов, поэтому я обратился к прекрасному Python-фреймворку нагрузочного тестирования Locust – он мало весит и легко устанавливается. Золотое правило перед стартом нагрузочного тестирования – вы должны знать метрики или число, которого хотите достичь. Поэтому я воспользуюсь утилитой нагрузочного тестирования, созданной моей компанией – мы сделали ее для тестирования нагрузки и производительности Redis. Код можно найти тут: https://github.com/opstree/redis-load-test Можно просто клонировать репозиторий git вот так: git clone https://github.com/opstree/redis-load-test.git Locust – проект на основе python, поэтому список зависимостей у меня невелик, но они, конечно, присутствуют. После клонирования репозитория нужно установить эти зависимости: cd Scripts Когда проблема зависимостей решена, можно перейти к шагу подключения утилиты к Redis. Для этого у нас есть файл redis.json в папке Scripts репозитория – надо просто обновить информацию о redis в этом файле, например, так: { С подключением разобрались – и о чудо, вы готовы использовать утилиту тестирования производительности. Просто перейдите в терминал и наберите команду. locust -f redis_get_set.py Результат будет выглядеть примерно так: Результат работы Locust Теперь откройте в браузере URL http://your_ip:8089 Страница интерфейса будет выглядеть примерно так: Locust UI Там у вас будет два пустых поля: Количество пользователей для симуляции: Общее количество запросов подключения, которое вам нужно. Скорость генерации: Как быстро вы хотите плодить пользователей. Заполнив эти поля, вы можете просто начать атаку, а дальше – ожидать ее завершения. После завершения вы получите подробную информацию. Базовая статистика Locust Эта страница загружает данные в статистической форме, но их можно также увидеть и в виде красивого графика в том же интерфейсе, например, так: График общего количества запросов в секунду График времени ответа Я также добавил подробную информацию в файл README репозитория. Одно из преимуществ нагрузочного тестирования, кажущееся мне важным – это возможность задать точку отсчета производительности в зависимости от окружения. И да, если производительность вашего Redis далека от идеала – посмотрите наши статьи о лучших практиках Redis и улучшении его производительности тут. Основная задача этой статьи – побудить людей выяснить ограничения своих окружений и подготовить их к любым трудностям. Надеюсь, я достаточно понятно все объяснил. Если у вас есть вопросы или предложения – не стесняйтесь их озвучить! |