Puncte:0

Să presupunem performanța platformei pe baza Nginx - ngx_http_stub_status_module

drapel cn

Nginx este plasat în fața unei arhitecturi de microservicii despre care nu avem nicio perspectivă. Preluăm valorile expuse de stare http stub și ar dori să calculăm un indicator al performanței platformei: nu putem folosi latența la un test de încărcare, deoarece dorim să comparăm site-uri diferite din punct de vedere geografic.

Ce am încercat până acum:

  • Calculați o deltă a cererilor totale pe unitatea de timp. Problemă: nu reflectă performanța, toate site-urile tratează aceeași cantitate de solicitări (100req la 100ms)
  • Utilizați indicatorul de conexiuni în așteptare*

*Cu acest indicator, observăm comportamente diferite. Cele două extreme sunt:

Server 2012 (E5-2620 v1, 24 fire): o medie de 68,62 conexiuni în așteptare la 100 ms

Server 2021 (AMD EPYC 7642, 96 fire): o medie de 91,96 Conexiuni în așteptare la 100 ms

Prima întrebare. Se pare că gabaritul ar trebui citit ca „cu cât mai mare, cu atât mai bine”. De ce? Documentația nu oferă detalii, dar, după cunoștințele noastre, aici ar trebui să apară o conexiune care așteaptă un răspuns. Sau acest indicator este compus doar din conexiuni inactive (adică cele deja deservite)?

A doua întrebare. La același test de încărcare, valorile conexiunii acceptate/tratate sunt mult mai mari pe cel mai recent server (aproximativ dublu). De ce? Ambele au deservit același număr de solicitări trimise de un grup de 100 de conexiuni. Ceea ce vedem este că cantitatea de conexiuni gestionate progresează foarte repede la început, până la o valoare de plafon diferită în funcție de arhitectură, iar ulterior progresia este destul de liniară. Nu putem găsi nicio explicație pentru acest comportament prezentat pe acest grafic: graficul conexiunilor gestionate

Puncte:0
drapel cn

Nu putem folosi latența la un test de încărcare așa cum vrem să comparăm site-uri diferite din punct de vedere geografic.

Într-adevăr? Timpul de răspuns pentru solicitări este o valoare care corespunde de fapt cât de lent este un lucru pentru un utilizator.Diferitele regiuni geografice ar putea duce la o distribuție statistică mai complexă, desigur, dar este totuși util de analizat.

Indicatorul [Conexiuni de așteptare] ar trebui citit ca „cu cât mai mare, cu atât mai bine”. De ce?

Conexiunile active de citire și scriere fac I/O, lucrează. A aștepta înseamnă a menține în viață, a aștepta clientul, după ce acesta a finalizat deja o cerere.

La aceleași solicitări pe nivel de secundă, citirea și scrierea mai scăzute sunt bune, deoarece asta se corelează cu deservirea rapidă a conexiunilor. Probabil asta înseamnă mai multă așteptare pentru clienți, deci numere de așteptare mai mari, dar există limite pentru numărul de conexiuni.

A doua întrebare. La același test de sarcină, conexiune acceptată/tratată valorile sunt mult mai mari pe cel mai recent server (aproximativ dublu). De ce?

Primele câteva secunde ale ambelor conexiuni de-a lungul timpului sunt puțin anormale, sărind aproape instantaneu. Nu sunt complet clar de ce se întâmplă acest lucru, dar poate că nginx a funcționat mai mult înainte de test, astfel încât contoarele sunt mai mari.

Aș ignora primele secunde ca o încălzire. Și, eventual, graficați cererile pe secundă de-a lungul timpului, deoarece poate fi mai ușor să vedeți tendințe în ceea ce ar trebui să fie o linie dreaptă.

PierreJ avatar
drapel cn
Ai dreptate, timpul de răspuns este o măsură utilă. Am reușit să evităm o distribuție statistică cea mai complexă calculând timpul de răspuns din perspectiva nginx (în loc de perspectiva clientului) folosind acest [modul](https://github.com/knyar/nginx-lua-prometheus)

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.