Soluţie
The deschide fișiere
limită poate fi a crescut.
⦠limita durată per proces este setată implicit la 1048576, dar poate fi
schimbat folosind sysctl „fs.nr_open”. Din: Ghid de management HAProxy | 5. Limitări de descriptor de fișiere
Am dat peste o resursă utilă despre cum să crească fs.nr_open
. Asta este ceea ce am ajuns să fac (pe mașina mea gazdă):
# 0. ssh în instanța mea cloud
# 1. schimbare la rădăcină
sudo su -
# 2. crește limita
sysctl -w fs.nr_open=2010000
# 3. salvați modificările și ieșiți
sysctl -p
Ieșire
# 4. acum sunteți din nou în shell-ul utilizatorului; trebuie să te reînregistrezi
# și din acest shell pentru ca modificările să intre în vigoare
Ieșire
Rețineți că modificările efectuate nu persistă după o repornire. Dacă cineva știe cum să facă asta, vă rog să-mi spuneți și îmi voi edita răspunsul.
De asemenea, trebuia să-i spun lui Docker că este în regulă să deschidă mai mult de 1.048.576 de fișiere în container. Folosisem un fișier Docker Compose pentru a-mi defini serviciile. Pur și simplu am adăugat următorul fragment la mine docker-compose.yml
:
Servicii:
proxy:
imagine: haproxy
# Începeți fragmentul
limite:
niciun fisier:
moale: 2005000
greu: 2005000
# Încheiați fragmentul
#...
#...
Nu în ultimul rând, asigurați-vă că instanța gazdă are cel puțin 2 GB de RAM sau veți rămâne fără memorie când veți încerca să rulați proxy-ul. Dacă doriți să gestionați efectiv 1 milion de solicitări cu proxy-ul dvs., veți avea nevoie de mult mai multă memorie - ceva între 20 și 30 GB - nu ezitați să testați singur. Dacă știi cum să calculezi limita, nu ezita să-mi editezi răspunsul sau să postezi un comentariu mai jos!
Motivație privind numărul de fișiere deschise
Dacă avem nevoie de 2.000.029 de fișiere deschise pentru 1 milion de conexiuni, atunci să:
- setați limita containerului proxy puțin peste aceasta: 2.000.029 + 4971 = 2.005.000
- setați limita sistemului de operare gazdă puțin peste aceasta: 2.005.000 + 5000 = 2.010.000