Probleme cu timpul de încărcare al blogului

După ce am șurubărit sub capota blog-ului acum vreo 2 luni, iată că a venit și prima lovitură neașteptată.

Am văzut zilele astea că timpul de încărcare al blogului a crescut considerabil, atât pe telefon, cât și pe laptop, de la 1.3 secunde la aproximativ 3-4 secunde (sau așa se simțea), ceea ce e extrem de mult în ziua de azi când lumea își dorește ca totul să se întâmple instant. Pur și simplu nu înțelegeam de ce s-a întâmplat acest lucru pentru că ieri îl lăsasem funcțional, fix cum trebuie.

După câteva minute de săpături am început să suspectez plugin-ul de caching care avea o problemă de conexiune și arăta ca mai jos, deși nu se schimbase nimic și nu se făcuse niciun update automat.

La fel, pe server, Redis părea că funcționează cum trebuie. Am mai săpat puțin, m-am uitat prin log-ul de Apache (/var/log/httpd/ ) și am văzut eroarea asta:

OOM command not allowed when used memory > 'maxmemory'

Brusc mi-am dat seama că problema nu era de la plugin-ul instalat pe WordPress, ci de la aplicația Redis care ajunsese cu cache-ul la memoria totală alocată – 64MB.

Inițial nu m-a dus mintea să cresc valoarea acestui parametru și să restartez Redis, ci mai întâi am schimbat cheia și am intrat în consolă ca să eliberez memoria alocată, aceasta fiind cea mai rapidă metodă de a rezolva erorile OOM (Out Of Memory).

redis-cli


MEMORY HELP

1) "MEMORY DOCTOR - Outputs memory problems report"

2) "MEMORY USAGE <key> [SAMPLES <count>] - Estimate memory usage of key"

3) "MEMORY STATS - Show memory usage details"

4) "MEMORY PURGE - Ask the allocator to release memory"

5) "MEMORY MALLOC-STATS - Show allocator internal stats"

Pentru un site de mici dimensiuni, cum e acesta, nu văd să fie o problemă c-am șters tot ce era stocat în cache. În schimb, pentru o aplicație care utilizează zeci de GB de memorie și nu acceptă un delay de câteva secunde pentru a afișa conținutul nu cred că se recomandă să dăm MEMORY PURGE. Atenție la comenzi!

Am mai citit pe alte site-uri că aș putea să setez și un timp de expirare pentru anumite valori din cache-ul Redis, dar trebuie să mă mai documentez în legătură cu asta, să studiez exact cum se face.

Vorba aia, din greșeli învață omul, iar la mine blog-ul, pe lângă funcția clasică pe care o îndeplinește cu succes, mai reprezintă și mediu de testare pentru diverse lucruri pe care vreau să le încerc. Ideea e că nu mă doare atât de tare dacă se strică ceva pentru că pot să refac totul de la zero în maxim jumătate de oră.

Ca să îmi amintesc pe viitor, locația de pe NAS-ul Synology unde se pot modifica parametrii Redis este cea de mai jos:

vim /volume1/@appdata/redis/redis.conf

maxmemory 64mb #currently set to 64mb

#unix location: /etc/redis/redis.conf

După ce am rezolvat problema cu viteza de încărcare a site-ului am mai descoperit că există încă o eroare în log-uri:

PHP message: WordPress database error Got a packet bigger than 'max_allowed_packet' bytes for query

Asta venea de la baza de date pentru că WordPress-ul încerca să facă un update cu o dimensiune mai mare decât cea permisă (1MB), iar rezolvarea a fost să modific fișierul de config al MariaDB astfel:

vim /volume1/@appstore/MariaDB10/usr/local/mariadb10/etc/mysql/my.cnf

max_allowed_packet = 32M

Măcar acum știu unde să merg pentru a rezolva rapid astfel de probleme. Vorba aia, punct ochit, punct lovit.

4 Comments

    • Varianta cu Redis mi se pare cea mai rapidă pentru mine. Am încercat mai multe plugin-uri de Worpress, dar parcă nu eram așa mulțumit ca acum.

Continuă discuția mai jos:

This site uses Akismet to reduce spam. Learn how your comment data is processed.