Am compilat haproxy pentru a aplica filtre speciale LUA și acum haproxy continuă să ruleze în limita maximă de deschidere a fișierelor. Merge fericit și apoi, brusc, jurnalele arată următorul mesaj:
Proxy www-out a atins limita procesului FD (maxsock=4026). Verificați „ulimit-n” și reporniți.
Am încercat să măresc această limită creând un fișier cu limite de servicii pentru haproxy.
cat /etc/systemd/system/haproxy.service.d/limits.conf
[Serviciu]
LimitNOFILE=600000
La pornirea haproxy, fișierul limits este încărcat.
â haproxy.service - HAProxy Load Balancer
Încărcat: încărcat (/lib/systemd/system/haproxy.service; activat; prestabilit furnizor: activat)
Drop-in: /etc/systemd/system/haproxy.service.d
ââlimite.conf
Activ: activ (în rulare) din miercuri 11-08-2021 15:07:08 CEST; acum 8s
Documente: man:haproxy(1)
fișier:/usr/share/doc/haproxy/configuration.txt.gz
Proces: 25865 ExecStartPre=/usr/local/sbin/haproxy -f $CONFIG -c -q $EXTRAOPTS (cod=exit, status=0/SUCCESS)
PID principal: 25867 (haproxy)
Cu toate acestea, asta pare să schimbe doar limita rigidă și nu limita soft a haproxy, privind procesul.
rădăcină 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 | grep "deschis"
Max fișiere deschise 4168 600000 fișiere
În sfârșit, doar câteva informații despre haproxy
Opțiuni de construcție:
TARGET = linux-glibc
CPU = generic
CC = cc
CFLAGS = -O2 -g -Wall -Wextra -Wdeclaration-after-statement -fwrapv -Wno-neused-label -Wno-sign-compare -Wno-unused-parameter -Wno-clobbered -Wno-lipsing-field-initializatori -Wtype -limits -Wshift-negative-value -Wshift-overflow=2 -Wduplicated-cond -Wnull-dereference
OPȚIUNI = USE_PCRE=1 USE_OPENSSL=1 USE_LUA=1 USE_SYSTEMD=1
DEBUG =
Lista de caracteristici : +EPOLL -KQUEUE +NETFILTER +PCRE -PCRE_JIT -PCRE2 -PCRE2_JIT +POLL +THREAD +BACKTRACE -STATIC_PCRE -STATIC_PCRE2 +TPROXY +LINUX_TPROXY +LINUX_SPLICE +LIBCRYPT +CRYPT_H +GETACCEADDRINFO - +GETADDRINFO - CLOS SLZ +CPU_AFFINITY +TFO +NS +DL +RT -DEVICEATLAS -51DEGREES -WURFL +SYSTEMD -OBSOLETE_LINKER +PRCTL +THREAD_DUMP -EVPORTS -OT -QUIC -PROMEX -MEMORY_PROFILING
Setări implicite :
bufsize = 16384, maxrewrite = 1024, maxpollevents = 200
Construit cu suport multi-threading (MAX_THREADS=64, implicit=36).
Construit cu versiunea OpenSSL: OpenSSL 1.1.1 11 septembrie 2018
Rulează pe versiunea OpenSSL: OpenSSL 1.1.1 11 septembrie 2018
Biblioteca OpenSSL acceptă extensii TLS: da
Biblioteca OpenSSL acceptă SNI: da
Biblioteca OpenSSL acceptă: TLSv1.0 TLSv1.1 TLSv1.2 TLSv1.3
Construit cu versiunea Lua: Lua 5.4.3
Construit cu suport pentru spațiu de nume de rețea.
Construit cu libslz pentru compresie fără stat.
Algoritmi de compresie acceptați: identity("identity"), deflate("deflate"), raw-deflate("deflate"), gzip("gzip")
Creat cu suport proxy transparent folosind: IP_TRANSPARENT IPV6_TRANSPARENT IP_FREEBIND
Construit cu versiunea PCRE: 8.39 2016-06-14
Rulează pe versiunea PCRE: 8.39 2016-06-14
Biblioteca PCRE acceptă JIT: nu (USE_PCRE_JIT nu este setat)
Suport pentru parole criptate prin crypt(3): da
Construit cu compilatorul gcc versiunea 7.5.0