Не совсем понятно, является ли это сетевым приложением или нет. Если он подключен к сети, вы можете просто масштабировать стресс-тест, крадя рабочий стол каждого на выходные, чтобы запустить стресс-тест. Это может быть самый простой способ масштабирования теста, если это всего лишь несколько специальных тестов.
Тем не менее, звучит так, будто могут быть некоторые простые улучшения. Если это длительный стресс-тест, то вместо создания нового потока для каждого запроса вы можете создать пул потоков для работы (или, что еще проще, использовать пул потоков, который будет масштабироваться автоматически). Таким образом, вы определяете тест, скажем, 2000 пользователей, и запускаете 2000 потоков, которые забивают сервер. Каждый поток по существу будет в цикле, который выполняет тест и повторяется.
Еще один неясный вопрос - пытаются ли все ваши потоки поделиться одним файлом. Один из способов уменьшить это узкое место - хранить информацию в памяти до завершения работы программы. Или раскрутите поток писателя, который отвечает за запись файла, и все остальные потоки сообщают ему информацию. Если резервное копирование IO действительно выполняется, ваш поток записи будет просто удерживаться в памяти до тех пор, пока IO не станет доступен, и ваши рабочие потоки могут продолжать забивать сервер тем временем. Просто имейте в виду, что из-за синхронизации потоков это может плохо масштабироваться, поэтому вы можете захотеть буферизовать некоторые записи в рабочем потоке и синхронизироваться с потоком средства записи файлов только каждые 100 запросов. Я не думаю, что это будет большой проблемой, поскольку не похоже, что вы отслеживаете что-то большее, чем время отклика.
Редактировать: на основе комментария
Я бы предложил попробовать использовать один поток для управления операциями ввода-вывода в этом случае. Все ваши рабочие потоки вместо записи в файл создают объект с какими-либо подробностями и передают его в очередь для записи в файл. Чтобы сократить блокировку / разблокировку, также используйте очередь в рабочем потоке и синхронизируйте ее только так часто. Убедитесь, что вы делаете блокировку, когда вы обмениваетесь информацией в теме. Кроме того, я, возможно, следил бы за использованием памяти, так как это позволит чему-либо ожидающему накопления в памяти. Если это все еще приводит к блокировке io, я бы посмотрел либо на запись меньше, либо на настройку или добавление более быстрого жесткого диска.