имитировать нагрузку на сервер с помощью BSD сокетов - PullRequest
1 голос
/ 16 июня 2011

Я использую блокировку TCP-сокетов в C и хочу имитировать высокую нагрузку на сервер, когда существует много одновременных подключений, а затем я хочу измерить время, необходимое для доступа к серверу через браузер в течение этого времени высокой нагрузки(сервер понимает заголовки HTTP).Также каждый клиентский запрос заканчивается быстро (отправляет заголовок HTTP - получает текст).

Как мне это сделать (без сбоев на моей локальной машине -> я пытался использовать fork, чтобы заработать много клиентов; у меня тоже есть виртуальная машина).Если у кого-то есть идея или общие указания о том, как это сделать, это будет много значить.

Редактировать: мне нужно запустить это с моим собственным клиентом, который использует измененную версию библиотеки OpenSSL для подключенияна мой сервер SSL / TLS, поэтому я не могу использовать внешние инструменты тестирования.

Я хочу знать, как построить клиент и сервер.Я не знаю слишком много о других сокетах, кроме блокирующих, я просто просматриваю книгу Ричарда Стивенса по сетевому программированию в UNIX, но мне было интересно, кто-нибудь может указать точное решение.

Спасиботы!

1 Ответ

1 голос
/ 16 июня 2011

Самое простое решение этой проблемы - загрузить существующую среду стресс-тестирования, такую ​​как fwptt (http://fwptt.sourceforge.net/).

Если вы хотите реализовать свою собственную среду стресс-тестирования, я бы посоветовал вам потерять блокирующий характер вашего кода и пойти на параллельный дизайн, который будет прекрасно масштабироваться. Тогда ограничивающим фактором в значительной степени является ваш процессор.

Было бы идеально иметь два физических сервера, чтобы стресс-тест не влиял на процессор (и, следовательно, время отклика) сервера. Кроме того, ваша виртуальная машина расходует драгоценное процессорное время.

...