как настроить файловые дескрипторы на уровне ОС для максимального повышения производительности ASIO

Я создаю сервер websocket++ и хочу убедиться, что получаю от него все возможное.

Зафойд, автор, сказал, что файловые дескрипторы уровня ОС должны быть правильно настроены, чтобы иметь более 10 000 клиентских подключений. https://stackoverflow.com/a/15464445/1382306

Как это можно сделать для Linux/Ubuntu?


person Community    schedule 08.04.2013    source источник
comment
Возможно, стоит прочитать проблему C10K.   -  person Tanner Sansbury    schedule 08.04.2013
comment
@TannerSansbury Во-вторых, хотя сайт Кегеля немного старомоден, это отличное введение в тему.   -  person zaphoyd    schedule 08.04.2013


Ответы (1)


«Получение последней капли производительности» — это не то, что вы можете сделать абстрактно. Он слишком сильно зависит от вашего приложения и среды. Чтобы получить полезный ответ, настройте систему стресс-тестирования/нагрузочного тестирования, запустите профилировщик и посмотрите, где что-то ломается или где находятся узкие места. Пока вы не сделаете это и не получите реальных сценариев и цифр, любые усилия, затраченные на «настройку производительности», скорее всего, будут потрачены впустую.

В частности, в отношении вопроса настройки серверов Linux для обеспечения большого количества одновременных подключений. Для каждого подключения требуется дескриптор файла. По умолчанию в Linux каждый процесс ограничен 1024 FD. Чтобы иметь > ~ 1024 подключений одновременно, вам нужно увеличить этот лимит. Это не влияет на производительность в расчете на одну команду, но требуется даже для того, чтобы начать думать о настройке производительности при высоких уровнях параллелизма.

для получения дополнительной информации см.: https://unix.stackexchange.com/questions/36841/why-is-number-of-open-files-limited-in-linux и https://serverfault.com/questions/190435/how-to-увеличить-лимит-открытых-файлов-для-процесса-от-1024-до-10240

person zaphoyd    schedule 08.04.2013