Limitați rata de returnare nginx

Nu există instrumente standard pentru acest lucru. Dar cred că pot scrie un modul pentru Engin consideră că dimensiunea de pachete pe secundă și X prevede să doarmă pe firul expeditor rămas până la a doua lângă milisecundă, în cazul dat mai mult decât este necesar (X> N).







De exemplu, am făcut cumva (nu pentru Enzhin, ci pentru procesare asincronă similară - toate atomice):


Această funcție atomică, cu o eroare mică (și un cost redus), limitează viteza bazinului în care această funcție este apelată la recul.

merge la somn firul de expediere
Care nginx nu este prezent. În principiu, sarcina nu este rezolvată în mod eficient la nivelul nginx.

Puteți împărți în mod egal între lățimea de bandă este lucrătorul, dar există nuanțe, în special, compușii vor concura pentru lățime de bandă numai în cadrul fiecărui proces individual, care nu poate fi complet sincer, în anumite situații datorate workers` de încărcare inegală.

Dar încercarea de al realiza eu - este de a săpa adânc în miezul Nginx și apoi restul vieții pentru a menține furculița, Marj tona de modificări, săptămânal, pentru a descoperi o zi pe care l-am dat seama singur, dar datorită experienței mare mai bună și mai eficientă. =)







Ei bine, pentru a începe cu, că, prin plasarea-l să doarmă, el nu va fi capabil de a procesa datele primite, să accepte conexiuni, lucra cu backend la acest punct, și mai mult decât un lucrător este angajat într-o porțiune semnificativă de timp. Sunt de acord, dar ...
În primul du-te la culcare numai bisericii însoțitoare care încearcă să trimită ceva ...
În al doilea rând, pentru câteva milisecunde (secundă maximă dacă canalul / backend-ul este foarte rapid).
În al treilea rând, nu puteți să vă culcați și să-l trimiteți pentru a face altceva (aceasta nu este o funcție a trei linii, dar totuși).
Nu este rezolvată în mod eficient deoarece nginx ca întreg nu are pur și simplu informații despre cât de mult a trimis în total date pe unitatea de timp. De asemenea, nu este necesar, funcția DoCheckSpeed, viteza variabilă o cunoaște. Uită-te din nou la codul meu din nou. Acest lucru este considerat atomic pentru toate firele care apelează DoCheckSpeed ​​cu dimensiunea pachetului trimis. Viteza conține dimensiunea totală a tuturor pachetelor trimise în ultima secundă în KB.
256 vorkers sau nu, absolut nu este important.
Apropo, am încercat perfect (chiar și când mă culc). Singura diferență față de Enzhyn în tampoanele mele este o piscină în care există un scriitor (expeditor) și există un cititor (receptor).







Articole similare

Trimiteți-le prietenilor: