A napokban kellett frissítenem egy webkiszolgáló és levelezőszerver alatt dolgozó MySQL-t, 5.5-ről 5.6-ra. Egy table_cache sor eltávolítását leszámítva gördülékenyen ment minden. Legalábbis látszólag. Aztán rövid időn belül jöttek a problémák: bizonyos weboldalak kiszolgálása érezhetően lelassult. A MySQL rendesen meghajtotta a processzort, érezhető volt, hogy valamiért nagyon szenved. Egy kis Munin grafikonelemzéssel egybekötött nyomozás gyorsan fényt derített a problémára.
A MySQL 5.6 alatt (egészen pontosan az 5.6.8-as változattól kezdve) a lekérdezések gyorsítótára (Query Cache) alapértelmezés szerint ki van kapcsolva. Így ha a régi konfigurációs fájlban a query cache nincs kifejezetten engedélyezve, a frissítés után kellemetlenül érinthet minket ez a változás. A megoldás kézenfekvő: adjuk hozzá az alábbi három sort a MySQL konfigurációs fájlhoz:
query_cache_type = 1 query_cache_size = 256M query_cache_limit = 8M
A MySQL újraindítása után a kérdéses weboldalak villámgyorsan megjelentek, de az alábbi grafikonok bizonyítják is, hogy nem csak szubjektív érzésről van szó:
![CPU terhelés](/sites/default/files/inline-images/cpu-day.png)
A processzorterhelés látványosan visszaesett
![Load](/sites/default/files/inline-images/load-day.png)
A rendszerterhelés úgyszintén
![MySQL cache](/sites/default/files/inline-images/mysql_qcache_mem-day.png)
Újra jönnek a találatok a cache-ből
![MySQL query cache](/sites/default/files/inline-images/mysql_queries-day.png)
Ja, hogy most már van cache és nem üres?
![MySQL queries](/sites/default/files/inline-images/mysql_queries-day_0.png)
Szinte minden lekérdezés a cache-ben talál hasznos eredményt
![MySQL slow queries](/sites/default/files/inline-images/mysql_slowqueries-day.png)
A lassú lekérdezések napjai leáldoztak
Sokat segít, ha van egy Munin vagy egy ehhez hasonló hasznos eszközünk is a fegyvertárunkban, amelynek segítségével naprakész adatokkal rendelkezünk a kiszolgálónk minden fontos paraméteréről és ezek változásáról is.