Решение
открывать файлы
ограничение возможно повысился.
¦ жесткое ограничение для каждого процесса по умолчанию установлено на 1048576, но его можно
изменено с помощью sysctl "fs.nr_open". От: Руководство по управлению HAProxy | 5. Ограничения файлового дескриптора
я наткнулся на полезный ресурс о том, как увеличить fs.nr_open
. Вот что я сделал (на моем хост-компьютере):
# 0. ssh к моему облачному экземпляру
# 1. изменить на корень
судо су -
# 2. увеличить лимит
sysctl -w fs.nr_open = 2010000
# 3. сохранить изменения и выйти
sysctl -p
выход
# 4. теперь вы снова в пользовательской оболочке; вам нужно повторно войти
# также из этой оболочки, чтобы изменения вступили в силу
выход
Обратите внимание, что внесенные изменения не сохраняются после перезагрузки. Если кто-то знает, как это сделать, сообщите мне, и я отредактирую свой ответ.
Мне также нужно было сообщить Docker, что можно открывать более 1 048 576 файлов в контейнере. Я использовал файл Docker Compose для определения своих сервисов. Я просто добавил следующий фрагмент в свой докер-compose.yml
:
Сервисы:
прокси:
изображение: хапрокси
# Начать сниппет
uлимит:
Нет файла:
мягкий: 2005000
жесткий: 2005000
# Конец фрагмента
# ...
# ...
И последнее, но не менее важное: убедитесь, что хост-экземпляр имеет не менее 2 ГБ ОЗУ, иначе у вас закончится память, когда вы попытаетесь запустить прокси. Если вы действительно хотите обработать 1 миллион запросов с помощью прокси-сервера, вам потребуется гораздо больше памяти — что-то между 20 и 30 ГБ — не стесняйтесь тестировать самостоятельно. Если вы знаете, как рассчитать лимит, не стесняйтесь редактировать мой ответ или оставлять комментарии ниже!
Обоснование количества открытых файлов
Если нам нужно 2 000 029 открытых файлов для 1 миллиона подключений, то давайте:
- установите лимит контейнера прокси немного выше этого: 2 000 029 + 4971 = 2 005 000
- установите лимит ОС хоста немного выше: 2 005 000 + 5000 = 2 010 000