Puncte:0

Memorați în cache imaginile central

drapel ng

Aplicație: Serviți imagini receptive și optimizate din mers prin tăierea/redimensionarea/comprimarea imaginilor principale

Sarcina curenta: 10k cerere pe minut, ~60MBps trafic.

Configurație curentă : NginxPlus LB se află în partea de sus. Mai multe servere de aplicații cu nginx->tomcat. Pe fiecare server de aplicații, imaginile sunt stocate în cache în nginx

Probleme curente:

  • Rata de accesare a memoriei cache slabă, deoarece memoria cache este descentralizată, probabilitatea ca aceeași cerere să lovească același server este scăzută.
  • Cache duplicat, deși acest lucru poate fi tolerat
  • Curățarea memoriei cache este greoaie. Deoarece memoria cache poate fi prezentă pe mai multe servere, pentru curățarea memoriei cache, trebuie curățată de pe toate serverele de aplicații

Soluții potențiale

  • Hashing consecvent Nginx Load Balancer. Problema cu această abordare este că poate cauza distribuția neuniformă a traficului

  • Introduceți un strat mijlociu de câteva servere nginx: Un strat dedicat de cache nginx poate fi introdus între LB și serverele de aplicații. Dar să spunem că păstrez 3 servere în acest strat, totuși are aceeași problemă de memorare în cache duplicat și de curățare dureri de cap, deși magnitudini mai mici.

  • I/O pe disc ar putea fi o problemă în cazul unui singur nginx

Are cineva experienta in rezolvarea acestui caz de utilizare? Să nu fie cu nginx. Simțiți-vă liber să vă împărtășiți gândurile.

anx avatar
drapel fr
anx
Ce te face să crezi că distribuția neuniformă a traficului devine o problemă? Cele mai multe setări suficient de mari pentru a justifica multe servere de aplicații vor avea, de asemenea, suficient de diverși utilizatori pentru a fi selectați aleatoriu, dar o selecție lipicioasă în amonte nu va provoca o distribuție neuniformă, care este semnificativă în comparație cu rezervele relative de capacitate pe care doriți să le aveți oricum în standby. Este posibil să încercați să rezolvați o problemă care abia poate fi măsurată cu modelele comune de trafic.
djdomi avatar
drapel za
Nu știu care sistem de fișiere poate fi cel mai bun, dar puteți folosi o stocare centrală pentru cache, acest lucru ar elimina efectele cache duble, deoarece toți folosesc același cache?
drapel us
Utilizarea unui sistem de fișiere partajat pentru cache ar putea să nu fie un scenariu acceptat în nginx. Dacă accesul la cache nu este sincronizat corect, se pot întâmpla tot felul de efecte ciudate. De asemenea, evenimentele de expirare a memoriei cache pot cauza probleme. Ce zici de implementarea memorării în cache pentru imaginile de pe nginxplus LB?
Holy_diver avatar
drapel ng
@TeroKilkanen, am înțeles punctul dvs., dar pe NginxPlusLB, este posibil să întâmpinăm probleme de intrare/ieșire a discului, deoarece toată încărcarea este prin LB. Acest lucru s-ar putea să funcționeze, dar nu prea multe dovezi în viitor.
djdomi avatar
drapel za
@Holy_diver Cred că un SSD poate face față scenariului dvs. sau depășiți un milion de IOPS pe o stocare bazată pe NVME? Are aproximativ 180k IOPS reale
mforsetti avatar
drapel tz
Rata slabă de accesări în cache la 10.000 de solicitări pe minut? Care este rata de accesare a cache-ului acum? Tind să fiu de acord cu @anx aici cu optimizarea prematură.
Holy_diver avatar
drapel ng
@mforsetti, Rata de accesare curentă este de 10%, iar politica LB este cea mai mică conexiune. Deci Cache-ul este descentralizat. Pentru hit, următoarea solicitare ar trebui să ajungă pe același server de aplicații.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.