Fine-tuning mysql, despre totul un pic

Joomla, la fel ca majoritatea aplicațiilor PHP, implică o sarcină semnificativă pe MySQL, care este utilizată pentru stocarea datelor. În căutarea unei performanțe îmbunătățite, mulți utilizatori încep cu interogări executabile care accelerează prin indexare. Adesea, mulți sunt mulțumiți de acest lucru. Dar dacă aveți un server dedicat (sau virtual), atunci aveți șansa norocoasă de a configura MySQL pentru sarcina dvs.







Înainte de a începe ..

Primul lucru pe care trebuie să-l faceți este copierea de rezervă a întregului server. Mai ales - bazele de date MySQL și my.cnf. Inițial, ar trebui să aflați cât de multă RAM puteți utiliza. Dar acum nu mă interesează deloc cantitatea de RAM pe care o are serverul tău. Vreau să spun cantitatea de memorie liberă. Evident, credeți că cu cât mai multă memorie RAM, cu atât mai mult va rămâne liberă (dar nu este întotdeauna așa. Am un server cu 2 GB de RAM, dar numai aproximativ 2 megabytes ...). Cel mai simplu mod de a vedea memoria liberă este să rulați o comandă simplă "free-m". Va apărea o mulțime de informații utile. Dar ne interesează doar a doua linie (începând cu "Mem:") și a patra coloană ("liberă"). Doar aici vedem cantitatea de megabytes de memorie RAM liberă.

Acum, uita-te la cât de mult MB de RAM ai liber. Amintiți-vă (va fi foarte util mai târziu). Acum, rulați comanda „top -d 1 2 -u MySQL -n“ (în loc de MySQL, specificați utilizatorul sub care se execută serverul MySQL).

Suntem interesați de valoarea coloanei "VIRT", care indică cantitatea de memorie RAM utilizată de MySQL în momentul de față ... Adăugați-o la memoria liberă, care a fost menționată mai devreme, și vom lucra cu ea ...

Verificați din când în când aceste valori. Mai târziu, s-ar putea să trebuiască să puneți ceva în fișierul de paginare.

Verificați fișierul my.cnf

IMPORTANT! Faceți o copie imediată a lui my.cnf înainte de a schimba ceva. Puteți găsi dvs. my.cnf (pe Linux) în directorul / etc. Înainte de a începe să schimbăm ceva, trebuie să știm de unde să începem. Mai jos este fișierul de configurare cu setările implicite. A ta poate fi ușor diferită, dar va fi încă punctul de plecare.







Rețineți că nu mai există variabile de mai jos (dacă le aveți, este în regulă. Puteți să le ștergeți, dar să nu ștergeți nimic legat de conexiuni, timeouts sau open_files_limit). Și așa, nu uitați cantitatea de memorie? Acum folosiți acest număr mai jos. Adăugați parametrii corespunzători în fișierul my.cnf, secțiunea [mysqld] (înlocuiți procentele cu valoarea echivalentă a memoriei RAM, care a fost menționată mai sus).

Rețineți că am folosit numai 86% din memoria liberă, plus aproximativ 10 megaocteți. Acest lucru este important pentru că nu vrem să folosim multă memorie. Acum, reporniți MySQL și lăsați-l să funcționeze timp de câteva zile în modul normal (sau dacă este un server de testare, simulați o încărcare BIG de trafic de rețea). De asemenea, re-colectați informații despre utilizarea RAM-ului.

Funny part.

Prima secțiune este traficul de rețea al serverului. Iată o descriere detaliată a numărului de cereri trimise către server (și numărul de conexiuni). Următoarea secțiune este statistica interogărilor. Aceasta este lista obișnuită a numărului de solicitări după tip. Apoi vine deja mai interesant pentru noi. Trei coloane ("Variabile", "Valoare" și "Descriere"). Rețineți că toate valorile incorecte și nepotrivite sunt roșii. Acest lucru este foarte important.

Cum să determinăm ce trebuie făcut.

Înainte de aceasta, am lucrat cu setările serverului și am ignorat următoarele variabile (legate de performanța interogării): slow_queries, toate variabilele cu prefixul handler_ și toate variabilele începând cu select_. Să începem cu Cache-ul cheie ("Cache index"). Această secțiune este aproape în partea de jos. Parametrul Key_read s ar trebui să fie mult mai mic (de aproape 1000 de ori) decât Key_read_requests. Dacă nu este cazul, atunci ar trebui să măriți key_buffer_size. Începeți cu o valoare egală cu un procent de 25% și vedeți cum funcționează toate. Sau dacă key_buffer_size este foarte mare, relativ key_blocks_ unused și key_blocks_used. Veți avea nevoie de spațiu pe disc suplimentar (alte 10%). Rețineți că nu faceți această valoare foarte mare, în caz contrar, serverul dvs. riscă să utilizeze fișierul swap. Este încă devreme pentru a reporni MySQL, ar trebui să vezi mai multe domenii.

Următoarea zonă mare este tabelele. Comparați variabilele Open_tables și Opened_tables. Dacă valorile lor sunt aproape la fel, totul este bine. Dacă open_tables este mult mai mare decât open_table (de 10 ori), atunci trebuie să corectați valoarea variabilei table_cache. Nu uitati ca crestem valorile, crescand astfel la 25%. După aceea, uitați-vă la Query Cach e ("Cache Query"). Fiți atenți la Qcache_free_memory. Ar trebui să existe o mare valoare (câteva megaocteți). Mai mult, valoarea Qcache_lowmem_prunes ar trebui să fie cât mai aproape de 0 sau, în general, să fie egal cu 0. Pentru această creștere query_cache_size. Următorul pas este să verificați valoarea created_tmp_files. Dacă nu este mic, crește tmp_table_size.

Revedeți din nou

Acum reporniți serverul. Lăsați-o să funcționeze timp de câteva zile (verificați în mod regulat utilizarea memoriei cu comanda liberă -m) și apoi treceți din nou prin setări. Când tot ceea ce este descris aici este realizat, ați obținut propriul dvs.! Și trebuie doar să te uiți la schimbările din încărcarea și bazele de date ale serverului din când în când.







Articole similare

Trimiteți-le prietenilor: