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ó:
A processzorterhelés látványosan visszaesett
A rendszerterhelés úgyszintén
Újra jönnek a találatok a cache-ből
Ja, hogy most már van cache és nem üres?
Szinte minden lekérdezés a cache-ben talál hasznos eredményt
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.