Я создаю сервер websocket ++, и я хочу быть уверенным, что получаю от этого все возможное падение производительности.
Автор zaphoyd сказал, что дескрипторы файлов на уровне ОС должны быть правильно настроены, чтобы иметь более 10 000 клиентских подключений. https://stackoverflow.com/a/15464445/1382306
Как это можно сделать для Linux / Ubuntu?
«Получение каждой последней капли производительности» — это не то, что вы можете сделать абстрактно. Это слишком сильно зависит от вашего приложения и среды. Чтобы получить полезный ответ, установите жгут для нагрузочного тестирования, запустите профилировщик и посмотрите, где что-то сломалось или где есть узкие места. Пока вы не сделаете это и не получите реальных сценариев и цифр, любые усилия, потраченные на «настройку производительности», скорее всего, будут потрачены впустую.
В частности, что касается вопроса о настройке серверов 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-increase-open-files-limit-for-process-from-1024-to-10240
Других решений пока нет …