Этот проект предназначен для сравнения производительности синхронного и асинхронного приложений на платформе ASP.NET Core с помощью нагрузочного тестирования (k6), мониторинга метрик через Prometheus и визуализации в Grafana. Используются метрики OpenTelemetry для сбора и анализа производительности.
- Sync App — приложение с синхронной обработкой запросов.
- Async App — приложение с асинхронной обработкой запросов.
- k6 — инструмент для генерации нагрузочного тестирования.
- Prometheus — система мониторинга и сбора метрик.
- Grafana — визуализация собранных метрик.
- ASP.NET Core
- Docker и Docker Compose
- Prometheus
- Grafana
- OpenTelemetry для сбора метрик
- k6 для нагрузочного тестирования
git clone https://github.com/VladislavRudakoff/AsyncApocalypse.git
cd AsyncApocalypse
docker compose up --build
После этого будет запущено:
- Синхронное приложение (порт
5000
) - Асинхронное приложение (порт
5001
) - Prometheus (порт
9090
) - Grafana (порт
3000
) - k6 (для нагрузочного тестирования)
Оба приложения будут доступны по следующим адресам:
- Синхронное приложение: http://localhost:5000
- Асинхронное приложение: http://localhost:5001
Grafana доступна по адресу http://localhost:3000.
Данные для входа:
- Логин:
admin
- Пароль:
admin
Можно поменять пароль, но это не обязательно. Лучше просто пропустить этот шаг(skip
).
После авторизации откройте заранее настроенный дашборд(.NET Dashboard
), где можно наблюдать метрики обоих приложений.
Нагрузочное тестирование автоматически запускается при общем старте файла docker-compose
, а для отдельного запуска k6
необходимо выполнить команду:
docker compose run k6
Скрипт для тестирования(load_testing.js
) находится в папке scripts
, и он автоматически начинает выполняться после запуска контейнера k6
.
- Если необходимо обновить конфигурацию или изменить нагрузочные тесты, отредактируйте файл
load_testing.js
в папке scripts. - Для просмотра и анализа других метрик можете самостоятельно настроить дополнительные панели в Grafana.