Как найти максимальное количество одновременных подключений, которое может обработать сервер? - PullRequest
2 голосов
/ 26 февраля 2010

Мне нужна Java-программа, которая может найти максимальное количество одновременных соединений, которые может обработать сервер?

Можно предположить, что сервер является http-сервером.

Чтобы быть более понятным:

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

Мое намерение состоит в том, чтобы поддерживать как можно больше одновременных соединений, не отбрасывая и не отклоняя клиентов?

Ответы [ 5 ]

2 голосов
/ 26 февраля 2010

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

1 голос
/ 26 февраля 2010

Используйте инструмент типа Apache JMeter для выполнения нагрузочного тестирования сервера. Вы захотите запустить инструмент JMeter на нескольких клиентских компьютерах: как уже упоминалось, различные операционные системы имеют ограничения на соединения. Он поддерживает параметры, включая количество одновременных подключений и т. Д. *

В прошлый раз, когда этот инструмент использовался для нагрузочного тестирования веб-сайта, у нас было 6 клиентских компьютеров, на которых JMeter работал на одном сервере. Блин, что дало сети молоток!

1 голос
/ 26 февраля 2010

В Apache Tomcat максимальное количество соединений хранится в файле "context.xml"

1 голос
/ 26 февраля 2010

Начало открытия новых подключений; когда вам отказывают в новых, вы достигли какого-то предела.

Однако, результат не будет точным любым способом:

  • сервер может иметь дросселирование на IP-адрес
  • количество соединений, которые сервер может обрабатывать одновременно, может зависеть от нагрузки на сервер
  • когда вы начинаете подключаться к серверу так быстро, как только можете, вы можете ограничиться собственным подключением
  • на некоторых серверах есть автоматические правила для запрета вас (отбрасывать весь трафик при открытии слишком большого количества соединений за короткий промежуток времени)
  • также, сетевой стек вашего компьютера может иметь некоторые ограничения на исходящие соединения (в частности, в Win XP раньше был такой предел)
  • если TCP-соединение проходит через какой-либо тип NAT с обеих сторон, некоторые более простые устройства (например, маршрутизаторы класса SoHo могут иметь свои внутренние ограничения - слоты в таблице NAT для подключения и т. Д.)

Кроме того, ваше тестирование равнозначно DoS-атаке, поэтому ВСЕГДА получает разрешение от владельцев серверов и других заинтересованных сторон (например, вашего интернет-провайдера, интернет-провайдера хостинга сервера и т. Д.) И уведомляет их перед началом таких тестов. , В противном случае вы можете оказаться на стороне иска.

1 голос
/ 26 февраля 2010

Просто создайте сокеты, пока не получите ошибку «Отказ в соединении», или программа заблокирует new Socket(), или вы получите Ошибка HTTP в диапазоне 5xx (обычно 503 Сервис недоступен).

Обратите внимание, что вы должны делать это только для внутренних тестов, потому что это атака типа "отказ в обслуживании".

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