Включите исполнение JavaScript в браузере, чтобы запустить приложение.
23 янв 2025

SyTester: простой инструмент нагрузочного тестирования

Саммари статьи о SyTester — инструменте нагрузочного тестирования, который можно «потрогать» на GitVerse.

В своей статье на Хабре Максим Ажгирей, руководитель команды разработки в СберТехе, рассказал об инструменте нагрузочного тестирования SyTester, над которым работает вместе с командой. Максим поделился, какие проблемы удалось решить благодаря этому инструменту, и особенностях его версий.

https://gv02-blog-obs01.obs.ru-moscow-1.hc.sbercloud.ru/image58c59c37adac743abbc9dd35659148cbc5a13ae3.jpeg

С разрешения автора мы сделали выжимку из текста, а полностью материал под названием «Меньше ресурсов при большей нагрузке: как мы создали простой инструмент нагрузочного тестирования» читайте по ссылке.

Что такое SyTester?

SyTester — простой, но эффективный инструмент нагрузочного тестирования. В первую очередь он предназначен для разработчиков, которым нужно быстро проводить тесты с высокими требованиями (от 100 000 транзакций в секунду) и различными протоколами.

Доступен он в двух версиях — Enterprise Edition (EE) для больших команд и бесплатной Community Edition, которую можно «потрогать» на GitVerse.

Какие проблемы решали

До перехода на SyTester периодически возникали проблемы с нагрузочным тестированием, например:

1. Асинхронные протоколы.

Сложности с корреляцией запросов и ответов, особенно при использовании разных генераторов нагрузки.

2. Централизованное управление.

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

3. Высокая нагрузка.

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

4. Разработка тестов.

Существующие инструменты часто имеют недостатки в интерфейсе и документации.

Все это удалось решить с переходом на SyTester. В статье рассмотрены варианты решения проблемы тестирования асинхронных протоколов и как они реализованы в SyTester:

1. Send, wait и read в одном потоке. Простой, но не масштабируемый вариант.

2. Send и read в разных потоках одного процесса. Помогает подавать гораздо больше нагрузки, что в первом варианте, и экономить ресурсы. Правда, потребуется синхронизировать запросы с ответами. Такой вариант поддерживается в SyTester СE.

3. Send и read в разных потоках разных процессов. Здесь уже нет ограничений одного генератора нагрузки, а значит можно подавать еще большую нагрузку. При этом потребуется внешнее хранилище для синхронизации запросов с ответами. Такой вариант реализован в SyTester EE.

Как решали остальные проблемы? В чем разница между EE и CE? Ответы на оставшиеся вопросы (в деталях и со схемами), а также примеры удобного и простого GUI SyTester ищите на Хабре.