Puncte:1

nginx încetinește serviciul meu de odihnă de 5 ori

drapel us

Am un serviciu REST simplu configurat care în mod nativ (executabil autonom) se ocupă de 135k/rps. Serviciul rulează pe localhost:8181

benchmark-ul autotunului care rulează de la randamente de mașini separate:

âââââââââââââ¬âââââââ¬ââââ ââââââ¬ââââââââ↽ âââ¬âââââââââââ¬â†ââââââââ¬âââââââ†â
â Stat â 1% â 2,5% â 50% â 97,5% â Medie â Stdev â Min â
âââââââââââââ¼ââ†ââââââ¼ââââââââââ¼ââ ââââââââ¼âââââââââ â¼âââââââââââ¼âââ†ââââââ¼ââââââââââ€
â Necesar/Sec â 58335 â 58335 â 109247 â 135039 â 106779,2 â 18509,53 â312 â
âââââââââââââ¼ââ†ââââââ¼ââââââââââ¼ââ ââââââââ¼âââââââââ â¼âââââââââââ¼âââ†ââââââ¼ââââââââââ€
â octeți/sec â 9,74 MB â 9,74 MB â 18,3 MB â 22,5 MB â 17,8 MB â 3,09 MB â 9,74 MB
âââââââââââââ´âââââââ´ââââ ââââââ´ââââââââ↽ âââ´âââââââââââ´âââââââ´âââ ââââââââ´âââââââ†â

Când se folosește proxy cu configurarea de bază în amonte prin nginx, performanța scade dramatic:

âââââââââââââ¬âââââââ¬ââââ ââââââ¬ââââââââ↽ âââ¬âââââââââââ¬â†âââââââ¬ââââââââ†Ő
â Stat â 1% â 2,5% â 50% â 97,5% â Medie â Stdev â Min â
âââââââââââââ¼ââ†ââââââ¼ââââââââââ¼ââ ââââââââ¼âââââââââ â¼âââââââââââ¼âââ†âââââ¼ââââââââââ¤
â Req/Sec â 13359 â 13359 â 14991 â 19103 â 15767,12 â 1878,98 â â 13
âââââââââââââ¼ââ†ââââââ¼ââââââââââ¼ââ ââââââââ¼âââââââââ â¼âââââââââââ¼âââ†âââââ¼ââââââââââ¤
â Octeți/sec â 2,53 MB â 2,53 MB â 2,83 MB â 3,61 MB â 2,98 MB â 355 kB â 2,52 MB
âââââââââââââ´âââââââ´ââââ ââââââ´ââââââââ↽ âââ´âââââââââââ´âââââââ´âââ âââââââ´âââââââ↼

Iată configurațiile mele nginx (am experimentat ușor, ceea ce a dus la îmbunătățiri foarte mici):

nginx.conf

utilizator www-date;
worker_proceses auto;
pid /run/nginx.pid;
includ /etc/nginx/modules-enabled/*.conf;

evenimente {
    conexiuni_muncitor 768;
    multi_accept pe;
}

http {
    open_file_cache max=200000 inactiv=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors activat;

    access_log off;
    error_log off;

    sendfile activat;
    tcp_nopush activat;
    tcp_nodelay dezactivat;
    keepalive_timeout 35;
    types_hash_max_size 2048;

    client_max_body_size 100M;


    includ /etc/nginx/mime.types;
    aplicație de tip_default/octet-stream;


    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers activat;


    gzip off;
    gzip_min_length 10240;
    gzip_comp_level 1;
    gzip_vary on;
    gzip_disable msie6;
    gzip_proxied a expirat fără cache fără stocare autentificare privată;

    server_tokens dezactivat;

    includ /etc/nginx/conf.d/*.conf;
    includ /etc/nginx/sites-enabled/*;
}

site-enabled/reverse-proxy.conf

în amonte pindap_api {
    minimum_conn; 
    server localhost:8181;
}

Server {
    asculta 80;
    nume_server api.pindap;

    access_log off;
    error_log off;

    Locație / {
        proxy_buffering dezactivat;
        proxy_pass http://pindap_api;
    }
}

Server {
    asculta 80;

    nume_server pindap;         

        access_log off;
        error_log off;

        Locație / {
        proxy_buffering dezactivat;
        proxy_pass http://localhost:8181;
        }
}

Care ar putea fi cauza acestui lucru? Ce altceva pot încerca?

djdomi avatar
drapel za
https://stackoverflow.com/questions/64862439/nginx-reverse-proxy-low-performance - poate poate ajuta?
djdomi avatar
drapel za
Îmi lipsește, de asemenea, `proxy_http_version 1.1;` și pentru reutilizarea conexiunii `proxy_set_header Connection "";` pentru a folosi keepalive, poate că acesta poate fi un blocaj
enko avatar
drapel us
@djdomi vă mulțumesc pentru link și aceste sugestii. Am văzut o îmbunătățire marginală (~ +5k rps) când am adăugat ```proxy_http_version 1.1;``` Altfel e la fel. Am încercat câteva setări de sistem în postarea pe care ați menționat-o, intervalul de porturi a fost de la 32768 la 60999, dar cu acesta setat de la 1024 la 65000 - nu există niciun impact. Mi-a trecut prin minte că acest lucru s-ar putea să fie sau nu din cauza faptului că acest server de dezvoltare rulează desktop Ubuntu 20.04 și ar putea exista o problemă mai puțin evidentă cu nucleul/configurarea. Așa că îl voi testa pe lansarea serverului pentru a vedea dacă acest lucru se întâmplă în continuare.
enko avatar
drapel us
actualizare rapidă: am decis să încerc un alt proxy doar pentru a vedea dacă problema generală a sistemului. HAProxy gestionează 114k rps. Este încă mai lent decât 135k rps nativ, dar rulează serviciul REST pe aceeași mașină la care este așteptat. De asemenea, consider că configurația HAProxy este puțin mai ușor de lucrat - așa că cred că o voi folosi în schimb, deoarece acest proiect nu are nevoie de server de fișiere static și se va baza în întregime pe microservicii.

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.