1
+7 (931) 375-4-375
ТГ @MobileProxy_factory
English-version
Санкт-Петербург | Казахстан
Главная/Технический ликбез/Как определить максимальное количетсво tcp-сессий на оборудовании

Как определить максимальное количетсво tcp-сессий на оборудовании

Максимальное количество TCP-соединений, которое можно запустить на интерфейсе LAN, зависит от нескольких факторов:
  • Мощность и пропускная способность оборудования: Маршрутизаторы, коммутаторы или другое сетевое оборудование имеют ограничения по количеству одновременных TCP-соединений, которые они могут обрабатывать. Эта информация обычно указывается в технических характеристиках устройства или может быть получена у производителя оборудования, если оборудование не ваше, например, роутер провайдера, то можно написать запрос ему, либо измерить это значение самостоятельно.
  • Размер таблицы состояний TCP: Каждое активное TCP-соединение требует резервирования системных ресурсов, включая память, для хранения информации о состоянии соединения. Операционная система с которой производятся измерения обычно имеет ограничения на максимальное количество TCP-соединений, которые могут быть установлены одновременно. На наших фермах устанавливается потолок ТCP-сессий равный 1777216 (один миллион семьсот семьдесят семь тысяч двести шестнадцать) активных сессий(это значение можно увеличить, но потребуется добавить оперативной памяти в сервер). Наш стандартный сервер Linux с 8 ГБ ОЗУ которым оснащается большинство сборок, вывез практический предел в размере 860 000 подключений. Чего более чем достаточно для любых современных задач.
  • Параметры настройки TCP: Некоторые параметры настройки TCP, такие как размер окна TCP, время ожидания и максимальное количество повторных передач, могут влиять на производительность TCP-соединений. На нашем оборудовании эти параметры отрегулированы таким образом чтобы установить большее количество соединений и повысить производительность.
  • Тип трафика: Некоторые типы трафика, такие как трафик с высоким объемом данных или интенсивный мультимедийный трафик, могут требовать больше ресурсов и оказывать большее влияние на производительность TCP-соединений. Как правило измерения максимальных значений используется трафик с небольшим объёмом данных.

В целом, определение максимального количества TCP-соединений на интерфейсе LAN требует учета всех вышеперечисленных факторов, а также конфигурации и возможностей вашей сетевой инфраструктуры. Рекомендуется обратиться к документации производителя оборудования или провести тестирование в конкретной сетевой среде для более точного определения этого значения.

Для тестирования максимального количества TCP-сессий можно использовать 2 инструмента:

Wrk - это инструмент для тестирования производительности веб-приложений. Он может быть использован для создания большого количества одновременных TCP-соединений с сервером. Вы можете настроить количество потоков и количество запросов в секунду для проверки. Wrk предоставляет гибкие возможности для тестирования и мониторинга производительности сервера. Важной особенностью также является определение потолка ТСР сессий.

Wrk (также известный как wrk2) - это инструмент для тестирования производительности веб-приложений. Он предоставляет возможность создавать большое количество параллельных HTTP-запросов и измерять производительность сервера, например чтобы оценить сколько сессий реально поднять через вашего интернет провайдера до сервера ya.ru можно использовать эту программу.

Вот особенности и возможности Wrk:

1. Многопоточность: Wrk поддерживает многопоточность и может создавать множество параллельных соединений к целевому серверу. Это позволяет создавать нагрузку на сервер, имитируя большое количество одновременных запросов.

2. Гибкие настройки: Wrk предоставляет различные настройки, которые можно изменять для настройки тестирования. Вы можете задать количество потоков, количество соединений, количество запросов в секунду и продолжительность тестирования.

3. Пользовательские запросы: Вы можете создавать пользовательские HTTP-запросы с помощью языка Lua. Это позволяет создавать сложные сценарии тестирования, отправлять специфические заголовки, передавать параметры и другие действия, которые могут быть необходимы для вашего тестирования.

4. Статистика и вывод: Wrk собирает различную статистику о производительности сервера, включая среднюю скорость обработки запросов, задержки, пропускную способность и другие метрики. Он также предоставляет вывод результатов в формате, который можно использовать для анализа и сравнения результатов.

5. SSL поддержка: Wrk поддерживает тестирование серверов, использующих защищенное соединение SSL/TLS. Вы можете указать SSL-сертификаты и настроить параметры соединения для таких случаев.

Wrk является мощным инструментом для тестирования производительности веб-приложений и может быть использован для измерения отклика сервера, пропускной способности, масштабируемости и других параметров. Однако, для использования Wrk требуется некоторое знание и опыт в работе с командной строкой и языком Lua для создания пользовательских сценариев, если это необходимо.

Пример данного теста

Подготовка Linux Ubuntu
Откройте терминал: Нажмите Ctrl + Alt + T, чтобы открыть терминал в большинстве дистрибутивов Linux.

1. Установите необходимые зависимости: Для сборки wrk потребуется установить несколько пакетов.
В Ubuntu и Debian, выполните следующие команды:

sudo apt update
sudo apt install build-essential libssl-dev


2. Скачайте и соберите wrk:
Вам потребуется клонировать репозиторий wrk из GitHub и собрать его:

git clone https://github.com/wg/wrk.git cd wrk make

3. Переместите wrk в системную папку:
После успешной компиляции, вы можете переместить исполняемый файл wrk в системную папку, например, /usr/local/bin, чтобы его можно было запускать из любой директории.

sudo mv wrk /usr/local/bin/

4. Теперь wrk должен быть установлен и готов к использованию на вашей системе Linux. Вы можете запустить его, используя команду wrk, как описано в документации. Например, чтобы отправить 1000 запросов с 10 потоками на http://example.com, вы можете выполнить:

wrk -t10 -c1000 http://example.com

Обратите внимание, что для сборки wrk вы можете также использовать другие инструменты сборки, такие как make или cmake, в зависимости от вашего дистрибутива и предпочтений.

Тест запустить можно вот так

в командной строке линукса(можно виртуалку использовать с ubuntu например)

wrk -t100000 -c100000 -p proxy.lua http://ya.ru

-t100000 указывает количество потоков (100 000), а -c100000 задает количество подключений (100 000). Вы можете настроить эти значения в соответствии с вашими требованиями.

-p proxy.lua указывает имя файла с настройками прокси.

—файл proxy.lua

wrk.connect_timeout = 1000  -- Таймаут для установки соединения (в миллисекундах)
wrk.timeout = 5000         -- Таймаут для чтения/записи (в миллисекундах)

request = function()
  local proxy_host = "192.168.1.100"  -- Адрес вашего прокси-сервера
  local proxy_port = 3182             -- Порт вашего прокси-сервера
  local proxy_username = "your_username"  -- Имя пользователя для авторизации
  local proxy_password = "your_password"  -- Пароль для авторизации
 
  -- Заголовки запроса
  local headers = {
    ["Host"] = "ya.ru",
    ["User-Agent"] = "wrk",
    -- Дополнительные заголовки, если необходимо
  }
 
  -- Параметры запроса (тело запроса)
  local body = nil
 
  -- Метод и путь запроса
  local method = "GET"
  local path = "/"
 
  -- Формирование строки авторизации в формате "Basic"
  local auth_string = proxy_username .. ":" .. proxy_password
  auth_string = wrk.encode(auth_string, "base64")
 
  -- Добавление заголовка "Proxy-Authorization" с авторизацией
  headers["Proxy-Authorization"] = "Basic " .. auth_string
 
  -- Формирование запроса с использованием прокси
  local req = wrk.format(method, path, headers, body)
  req = string.gsub(req, "\r\nHost: ", "\r\nHost: " .. proxy_host .. ":" .. proxy_port .. " ")
 
  return req
end

Есть вопрос — напишите!
Или заполните форму ниже и мы вам перезвоним
это поле обязательно для заполнения
Строка ввода:*
это поле обязательно для заполнения
Телефон:*
это поле обязательно для заполнения
*
это поле обязательно для заполнения
Ваш вопрос*
Нажав кнопку «Отправить» вы соглашаетесь
с правилами политики конфиденциальности
Спасибо! Форма отправлена
Площадь Морской славы 1 (Морской вокзал)
Санкт-Петербург, Россия, 191186
Logo
Санкт-Петербург | Казахстан
Политика конфиденциальности
Закажите готовый комплект
или мы поможем расчитать стоимость
это поле обязательно для заполнения
Строка ввода:*
это поле обязательно для заполнения
Телефон:*
это поле обязательно для заполнения
Telegram:*
это поле обязательно для заполнения
Область ввода:*
это поле обязательно для заполнения
Спасибо! Форма отправлена