Я скомпилировал haproxy, чтобы применить специальные фильтры LUA, и теперь haproxy продолжает работать до максимального предела открытия файла. Он работает счастливо, а затем внезапно в журналах появляется следующее сообщение:
Прокси-сервер www-out достиг предела FD процесса (maxsock=4026). Пожалуйста, проверьте ulimit-n и перезапустите.
Я попытался увеличить это ограничение, создав файл ограничений службы для haproxy.
кошка /etc/systemd/system/haproxy.service.d/limits.conf
[Оказание услуг]
LimitNOFILE=600000
При запуске haproxy загружается файл лимитов.
haproxy.service — балансировщик нагрузки HAProxy
Загружено: загружено (/lib/systemd/system/haproxy.service; включено; предустановка поставщика: включена)
Вставка: /etc/systemd/system/haproxy.service.d
ââlimits.conf
Активно: активно (работает) с 11 августа 2021 г., 15:07:08 CEST; 8 сек. назад
Документы: мужчина: haproxy(1)
файл:/usr/доля/doc/haproxy/configuration.txt.gz
Процесс: 25865 ExecStartPre=/usr/local/sbin/haproxy -f $CONFIG -c -q $EXTRAOPTS (code=exited, status=0/SUCCESS)
Основной PID: 25867 (прокси)
Однако это, похоже, меняет только жесткое ограничение, а не мягкое ограничение haproxy, глядя на процесс.
корень 25867 0,1 0,0 141136 18264 ? Ss 15:07 0:00 /usr/local/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
haproxy 25869 0,1 0,0 1173536 12860 ? Sl 15:07 0:00 \_ /usr/local/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
test@test ~> cat /proc/25867/limits | грэп "открыть"
Максимальное количество открытых файлов 4168 600000 файлов
Наконец-то немного информации о haproxy
Варианты сборки:
ЦЕЛЬ = linux-glibc
ЦП = общий
СС = СС
CFLAGS = -O2 -g -Wall -Wextra -Wdeclaration-after-statement -fwrapv -Wno-unused-label -Wno-sign-compare -Wno-unused-parameter -Wno-clobbered -Wno-missing-field-initializers -Wtype -limits -Wshift-отрицательное-значение -Wshift-overflow=2 -Wduplicated-cond -Wnull-разыменование
ОПЦИИ = USE_PCRE=1 USE_OPENSSL=1 USE_LUA=1 USE_SYSTEMD=1
ОТЛАДКА =
Список функций: +EPOLL -KQUEUE +NETFILTER +PCRE -PCRE_JIT -PCRE2 -PCRE2_JIT +POLL +THREAD +BACKTRACE -STATIC_PCRE -STATIC_PCRE2 +TPROXY +LINUX_TPROXY +LINUX_SPLICE +LIBCRYPT +CRYPT_H +GETADDRINFO +OPENSSL +LUA +ACCEPT4 -CLOSEFROM -ZLIB +ZLIBROM SLZ +CPU_AFFINITY +TFO +NS +DL +RT -DEVICEATLAS -51DEGREES -WURFL +SYSTEMD -OBSOLETE_LINKER +PRCTL +THREAD_DUMP -EVPORTS -OT -QUIC -PROMEX -MEMORY_PROFILING
Настройки по умолчанию :
bufsize = 16384, maxrewrite = 1024, maxpollevents = 200
Построен с поддержкой многопоточности (MAX_THREADS=64, по умолчанию=36).
Построено с версией OpenSSL: OpenSSL 1.1.1 11 сентября 2018 г.
Работает на версии OpenSSL: OpenSSL 1.1.1 11 сентября 2018 г.
Библиотека OpenSSL поддерживает расширения TLS: да
Библиотека OpenSSL поддерживает SNI: да
Библиотека OpenSSL поддерживает: TLSv1.0 TLSv1.1 TLSv1.2 TLSv1.3
Построен с версией Lua: Lua 5.4.3
Построен с поддержкой сетевого пространства имен.
Построен с помощью libslz для сжатия без сохранения состояния.
Поддерживаемые алгоритмы сжатия: identity("identity"), deflate("deflate"), raw-deflate("deflate"), gzip("gzip")
Построен с поддержкой прозрачного прокси с использованием: IP_TRANSPARENT IPV6_TRANSPARENT IP_FREEBIND
Построено с версией PCRE: 8.39 2016-06-14
Работает на версии PCRE: 8.39 2016-06-14
Библиотека PCRE поддерживает JIT: нет (USE_PCRE_JIT не задано)
Поддержка зашифрованного пароля через crypt(3): да
Построен с помощью компилятора gcc версии 7.5.0.