Сколько параллельных соединений поддерживает Workerman
Концепция параллелизма слишком расплывчата, здесь мы объясним это с помощью двух количественных показателей: параллельное количество соединений и параллельное количество запросов.
Параллельное количество соединений - это количество TCP-соединений, поддерживаемых сервером в данный момент времени, при этом не учитывается, есть ли обмен данными по этим соединениям. Например, на сервере для отправки уведомлений может поддерживаться миллион устройств, и поскольку на этих соединениях обмен данными происходит крайне редко, нагрузка на этот сервер может быть практически равной 0. Если памяти достаточно, сервер может продолжать принимать соединения.
Параллельное количество запросов обычно измеряется в QPS (количество запросов, обрабатываемых сервером в секунду), при этом текущее количество TCP-соединений на сервере не имеет особого значения. Например, если сервер имеет только 10 клиентских соединений, и на каждом клиентском соединении обрабатывается 10 тысяч запросов в секунду, тогда серверу необходимо поддерживать как минимум 10 * 10 тысяч = 100 тысяч запросов в секунду (QPS). Предположим, что 100 тысяч запросов в секунду - это предел возможностей этого сервера. Если каждый клиент отправляет только 1 запрос в секунду, то этот сервер сможет поддерживать 100 тысяч клиентов.
Параллельное количество соединений ограничено памятью сервера. Обычно сервер Workerman с 24 ГБ оперативной памяти может поддерживать около 1,2 миллиона параллельных соединений.
Параллельное количество запросов ограничено вычислительной мощностью процессора сервера. Сервер Workerman с 24 ядрами может достигать 450 тысяч запросов в секунду (QPS), при этом фактические значения могут варьироваться в зависимости от сложности бизнес-логики и качества кода.
Внимание
Для сценариев с высокой нагрузкой необходимо установить расширение event, см. раздел установки и настройки. Кроме того, требуется оптимизация ядра linux, особенно ограничения на количество открытых файлов для процессов, см. раздел оптимизации ядра в приложении.
Данные тестирования
Данные получены из третьей стороны авторитетного агентства по нагрузочному тестированию techempower.com 20-й раунд тестирования
https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=db&l=zik073-sf
Конфигурация сервера:
Всего ядер 14, Всего потоков 28, 32 ГБ памяти, Выделенный коммутатор Cisco на 10 гигабит
Бизнес-логика:
Логика с запросами к базе данных, база данных pgsql, php8 + jit
QPS более 390 тысяч
