WordPress ja PHP Opcode Cache (OPcache) kokonaisuutena
WordPressin suorituskyvystä puhuttaessa katse kääntyy usein tietokantaan, välimuisteihin ja CDN:iin. Silti yksi kriittisimmistä suorituskykykerroksista jää helposti varjoon: PHP Opcode Cache eli OPcache. Se on näkymätön, mutta vaikutukseltaan valtava. Kun OPcache toimii oikein, WordPress tuntuu kevyemmältä, vakaammalta ja ennustettavammalta. Kun se on väärin konfiguroitu, palvelin hukkaa tehoa joka ikisellä pyynnöllä.
OPcache ei nopeuta WordPressiä taianomaisesti. Se poistaa turhaa työtä, jota PHP muuten tekisi yhä uudelleen.
Mitä OPcache oikeasti tekee
PHP on tulkattava kieli. Ilman OPcachea jokainen pyyntö:
-
lukee PHP-tiedostot levyltä
-
jäsentää ne
-
kääntää ne opcode-muotoon
-
suorittaa ne
OPcache katkaisee tämän ketjun. Se:
-
kääntää PHP-tiedostot kerran
-
säilyttää opcode-version muistissa
-
käyttää samaa versiota seuraavilla pyynnöillä
WordPressissä, jossa satoja PHP-tiedostoja ladataan jokaisella pyynnöllä, tämä säästö on merkittävä.
WordPressin luonne ja OPcache
WordPress lataa paljon koodia
Yksi WordPress-pyyntö:
-
lataa core-tiedostoja
-
lataa teeman
-
lataa aktiiviset lisäosat
-
ajaa hookeja ja filtterejä
Ilman OPcachea tämä tarkoittaa jatkuvaa kääntämistä. OPcache tekee tästä kertaluonteisen kustannuksen.
OPcache hyödyttää myös adminia
Toisin kuin HTTP-välimuisti:
-
OPcache toimii myös wp-adminissa
-
hyödyttää kirjautuneita käyttäjiä
-
parantaa kaikkia pyyntöjä
Siksi OPcache on yksi harvoista optimoinneista, joka parantaa koko järjestelmää tasaisesti.
OPcache ei ole sovellusvälimuisti
Yleinen väärinkäsitys
OPcache:
-
ei cacheta HTML:ää
-
ei cacheta kyselyiden tuloksia
-
ei ymmärrä WordPressin logiikkaa
Se cachettaa vain PHP-koodin käännetyn muodon. Tämä tekee siitä:
-
turvallisen
-
ennustettavan
-
lähes riskittömän
OPcache ei riko sisältöä, mutta se voi paljastaa huonon konfiguraation.
Muisti on OPcachen valuutta
Liian pieni muisti on pahin virhe
Jos OPcache-muisti:
-
täyttyy liian nopeasti
-
alkaa poistaa vanhoja opcodeja
-
joutuu kääntämään tiedostoja uudelleen
hyödyt katoavat lähes kokonaan. WordPress-ympäristössä tämä näkyy satunnaisena hitautena.
WordPressin koko vaikuttaa suoraan
Muistin tarve kasvaa, kun:
-
lisäosia on paljon
-
teemassa on paljon PHP-tiedostoja
-
multisite on käytössä
Yksi arvo ei sovi kaikille. OPcache pitää mitoittaa projektin mukaan.
Tiedostomuutokset ja OPcache
Kehitys vs. tuotanto
Kehitysympäristössä:
-
PHP-tiedostot muuttuvat usein
-
OPcache voi hidastaa kehitystä
-
muutokset eivät näy heti
Tuotannossa:
-
koodi muuttuu harvoin
-
OPcache on lähes täydellinen ratkaisu
Sama konfiguraatio ei sovi molempiin.
Milloin OPcache tarkistaa tiedostot
OPcache voi:
-
tarkistaa tiedostojen muuttumisen joka pyynnöllä
-
tarkistaa ne aikavälein
-
luottaa siihen, ettei ne muutu
Liian tiheä tarkistus syö suorituskykyä. Liian harva vaatii hallittua deploy-prosessia.
OPcache ja PHP-FPM
Prosessimalli vaikuttaa kaikkeen
PHP-FPM:
-
käyttää useita worker-prosesseja
-
jakaa OPcache-muistin niiden kesken
-
lukitsee muistialueita
Huono FPM-konfiguraatio voi:
-
aiheuttaa lock contentionia
-
hidastaa opcode-hakuja
-
mitätöidä OPcachen hyödyt
OPcache ei ole irrallinen optimointi, vaan osa PHP-FPM-ekosysteemiä.
OPcache autoscale-ympäristössä
Jokainen instanssi on oma maailmansa
Pilviympäristössä:
-
jokaisella instanssilla on oma OPcache
-
kylmä käynnistys tyhjentää välimuistin
-
skaalautuminen aiheuttaa cache miss -piikkejä
Tämä ei ole virhe, vaan ominaisuus. Se pitää huomioida kapasiteettisuunnittelussa.
Kylmä cache näkyy käyttäjille
Ensimmäiset pyynnöt:
-
ovat hitaampia
-
kuormittavat levyä ja CPU:ta
-
tasaantuvat ajan myötä
Hyvä deploy-strategia minimoi tämän vaikutuksen.
OPcache ja WordPress-päivitykset
Core- ja lisäosapäivitykset
Kun PHP-tiedosto muuttuu:
-
OPcache invalidioi vanhan version
-
uusi opcode generoidaan
-
seuraava pyyntö maksaa enemmän
Siksi massapäivitysten jälkeen:
-
lyhyt suorituskykylasku on normaalia
-
ongelma korjaantuu itsestään
Jos ei korjaannu, konfiguraatio on väärä.
Turvallisuus ja OPcache
OPcache ei ole tietoturvariski
OPcache:
-
ei paljasta dataa käyttäjille
-
ei ohita oikeuksia
-
ei muuta WordPressin logiikkaa
Suurin riski on:
-
vanhan koodin ajaminen vahingossa
-
huono deploy-hygienia
Tämä on prosessiongelma, ei tekninen haavoittuvuus.
Milloin OPcache toimii oikein
OPcache on kunnossa, kun:
-
PHP CPU-käyttö laskee
-
vasteajat tasaantuvat
-
piikit vähenevät
-
admin tuntuu kevyemmältä
Usein paras merkki onnistumisesta on se, että OPcachea ei tarvitse ajatella arjessa.
Lopuksi: OPcache on WordPressin perustavanlaatuinen optimointi
OPcache ei ole lisäosa, eikä hienosäätö. Se on perusedellytys modernille WordPress-ympäristölle. Ilman sitä WordPress tuhlaa laskentatehoa joka pyynnöllä.
Kun OPcache on oikein mitoitettu ja sovitettu ympäristöön:
-
WordPress reagoi nopeammin
-
kuorma jakautuu tasaisemmin
-
infra kestää paremmin kasvua
OPcache ei tee WordPressistä nopeaa. Se tekee siitä järkevän.
