У меня есть серверное приложение, которое по-разному обрабатывает запросы клиентов.
Я хочу знать, сколько пользователей может быть обслужено с минимальной задержкой, поэтому я сделал небольшое приложение для стресс-тестирования, которое имитирует запросы пользователей; в то же время другое приложение отслеживает использование памяти / ЦП.
Инструмент стресс-теста каждую секунду создает поток, где каждый поток представляет пользователя. Если стресс-тест не может создать новый поток из-за нехватки ресурсов, он запускает новый экземпляр инструмента стресс-теста.
Проблема в том, что каждый поток записывает в файл задержку для каждого запроса и текущее количество запущенных потоков, поэтому это вызывает проблему ввода-вывода, поскольку через пару минут у вас будет много потоков, которые необходимо записать на диск, также это поведение будет не существует в реальном сценарии, поскольку клиент запрашивает только данные.
Как мне решить эту проблему, если я хочу измерить максимальную задержку для каждого пользователя?
PS:
В некоторых ответах говорится, что нужно запускать на другом компьютере, чтобы учесть задержку в сети, хорошо, это будет мой последний стресс-тест, в настоящее время я провожу этот тест на том же сервере, чтобы определить, сколько пользователей поддерживается с минимальной задержкой.