Puncte:0

Performanță lentă a serverului [nginx + php+fpm + mariadb]

drapel co
Rob

Am probleme în a găsi un blocaj al performanței lente a serverului meu. Un singur site wordpress (10-40 de utilizatori online) cu cache fastcgi și cache complet HTML cloudflare. Performanța site-ului este bună pentru vizitatori din cauza stocării în cache, utilizatorii autentificați se confruntă cu timpi de încărcare a paginii de 1-10 secunde. Monitorul de interogare este folosit pentru depanare. Site-ul funcționa mult mai bine pe o mașină cu 1 nucleu, 2 GB ram. Nu am idee ce cauzează asta. Orice ajutor este mult apreciat. Mulțumesc.

Exemplu de încărcare lentă cu un singur post:Încărcare lentă a monitorului de interogare

Exemplu de încărcare bună cu un singur post: Încărcare rapidă a monitorizării interogărilor

Utilizez KVM 2 Cores @ 3.50+ GHz 8 GB Memorie 160 GB SSD.
    Versiunea nginx: nginx/1.14.1
    PHP 7.4.22 (cli) + memcached 
    10.6.3-MariaDB

root@localhost:~# free -m
              total folosit gratuit partajat buff/cache disponibil
Mem: 7987 1546 195 121 6245 6020
Schimb: 8191 268 7923

Setări PHP-FPM: (Am încercat să le măresc, fără modificări)

pm = dinamic
pm.max_children = 100
pm.start_servers = 8
pm.min_spare_servers = 4
pm.max_spare_servers = 8
pm.max_requests = 200

Bază de date

Versiunea de server 5.5.5
Extensia mysqli
Versiunea client 70422 (7.4.22)
innodb_buffer_pool_size 2147483648 (~2 GB)
key_buffer_size 134217728 (~128 MB)
max_allowed_packet 16777216 (~16 MB)
max_connections 151
query_cache_limit 1048576 (~1 MB)
query_cache_size 67108864 (~64 MB)
query_cache_type ON

nginx.conf

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

evenimente {
    conexiuni_muncitor 2048;
    # multi_accept on;
}

http {

    ##
    # Setări de bază
    ##

    sendfile activat;
    tcp_nopush activat;
    tcp_nodelay activat;
    types_hash_max_size 2048;
    # server_tokens off;
    proxy_buffering activat;
    access_log off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

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

    ##
    # Setări SSL
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Eliminarea SSLv3, ref: POODLE
    ssl_prefer_server_ciphers activat;

    ##
    # Setări de înregistrare
    ##

    # access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Setări Gzip
    ##

    gzip on;
    gzip_disable „msie6”;

    # gzip_vary on;
    # gzip_proxied orice;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Configurații gazdă virtuală
    ##
    
    ################# cache-uri ###############
    proxy_cache_path /etc/nginx/static-cache levels=1:2 keys_zone=s3_cache:200m max_size=1800G inactive=10y use_temp_path=off;

    fastcgi_cache_path /etc/nginx/fastcgi-cache levels=1:2 keys_zone=phpcache:50m max_size=1g inactiv=7d use_temp_path=off;
    fastcgi_cache_key „$scheme$request_method$gazdă$request_uri”;

    #############################
    client_max_body_size 2000M;



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

conf. server nginx

# treceți scripturile PHP către serverul FastCGI
locație ~ \.php$ {
        try_files $uri =404;
       fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
            fastcgi_read_timeout 150;
        fastcgi_buffers 16 16k; 
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;

fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_cache phpcache;
fastcgi_cache_valid 200 301 302 60m;
fastcgi_cache_use_stale eroare timeout la actualizare invalid_header http_500 http_503;
fastcgi_cache_min_uses 1;
fastcgi_cache_lock activat;
add_header X-FastCGI-Cache $upstream_cache_status;

}

EDITAȚI | ×: Am făcut niște teste în afara Wordpress. Se generează 100000 de șiruri aleatorii pentru ciclu.

    <?php $start_time = microtime(true); ?>

<?php        ini_set('display_errors', 1);
        ini_set('display_startup_errors', 1);
        error_reporting(E_ALL);
        
    # define("WP_USE_THEMES", false);
    #require_once("/var/www/server/wp-blog-header.php");


        for($i = 0; $i < 100000; $i++){
            generateRandomString(2);
        }


function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

        ?>

This page was generated in <?php echo(number_format(microtime(true) - $start_time, 2)); ?>

Și rezultatele sunt aproape aceleași. Unele solicitări se termină în 0,1 secunde, altele durează până la 5 secunde. Se pare că PHP își face treaba foarte bine. Poate că php-fpm încetinește lucrurile, apoi se conectează cu nginx?

Michael Hampton avatar
drapel cz
Activați [jurnalul de interogări lent](https://mariadb.com/kb/en/slow-query-log/) (cu un timp_de_interogare mult mai rezonabil, de exemplu, 1 s), apoi verificați-l mai târziu pentru a vedea dacă există ceva interesant fost înregistrată.
Rob avatar
drapel co
Rob
Am facut. Iată ultima interogare lentă înregistrată: https://pastebin.com/spyvBGSR EDIT: acesta este jurnalul lent PHP. Mysql nu pare a fi o problemă.
drapel cn
Dacă primiți în mod obișnuit `memcached-class-object-cache.php` referit în partea de sus a jurnalului lent PHP-FPM, aceasta indică o problemă cu instanța/serverul Memcached. De ce nu Redis în schimb?
Rob avatar
drapel co
Rob
Memcached a fost înlocuit cu Redis. Fără îmbunătățiri.
Rob avatar
drapel co
Rob
Iată o captură de ecran din profilul xdebug: https://prnt.sc/1tuike7 Nu am experiență cu asta, așa că nu îmi răspunde la nicio întrebare.
drapel ua
Scapă de cache. Nu aveți un sistem suficient de ocupat pentru a merita folosit.
Rob avatar
drapel co
Rob
De ce aș vrea să scap de memorarea în cache și să ofer cereri lente pentru utilizatorii mei?
Puncte:0
drapel co
Rob

Se pare că problema este rezolvată. Mi-am contactat furnizorul VPS, mi-au confirmat că serverul meu este throttling termic și vor rezolva această problemă. Acesta răspunde de ce unele solicitări sunt lente.

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.