WordPress ja HTTP keep-alive vaikutus suorituskykyynHTTP keep-alive on yksi niistä verkkoteknologian perusominaisuuksista, jotka ovat lähes näkymättömiä käyttäjälle mutta ratkaisevan tärkeitä suorituskyvylle. WordPressin kaltaisessa dynaamisessa järjestelmässä keep-alive vaikuttaa suoraan siihen, kuinka nopeasti sivut latautuvat ja kuinka paljon kuormaa palvelin kestää.

Kyse ei ole WordPressin omasta ominaisuudesta, vaan HTTP-protokollan käyttäytymisestä palvelimen ja selaimen välillä. Silti sen vaikutus näkyy selvästi WordPress-sivuston vasteajoissa, resurssien käytössä ja skaalautuvuudessa.

Mitä HTTP keep-alive tarkoittaa

Normaalissa HTTP/1.0-mallissa jokainen pyyntö toimi näin:

  1. Selain avaa TCP-yhteyden

  2. Pyyntö lähetetään

  3. Vastaus saadaan

  4. Yhteys suljetaan

Jos sivu sisälsi:

– HTML:n
– CSS:n
– JavaScriptin
– kuvia

jokainen tiedosto vaati oman yhteyden.

HTTP keep-alive muuttaa tämän mallin. Yhteys:

– pidetään avoinna useita pyyntöjä varten
– käytetään uudelleen
– suljetaan vasta myöhemmin

Yksi TCP-yhteys voi siis palvella useita resursseja.

Miksi yhteyden avaaminen on kallista

TCP-yhteyden avaaminen ei ole ilmainen operaatio. Se sisältää:

– kolmen vaiheen handshake-prosessin
– mahdollisen TLS-kättelyn
– verkon viiveen

TLS-yhteydessä tämä voi tarkoittaa:

– useita RTT-kierroksia
– kymmeniä millisekunteja viivettä

Jos jokainen resurssi avaa uuden yhteyden, viive kasvaa nopeasti.

WordPress-sivun resurssimäärä

Tyypillinen WordPress-sivu lataa:

– HTML-dokumentin
– useita CSS-tiedostoja
– useita JavaScript-tiedostoja
– fontteja
– kuvia

Helposti:

– 30–80 HTTP-pyyntöä
– joskus yli 100

Ilman keep-alivea tämä tarkoittaisi:

– kymmeniä TCP-yhteyksiä
– valtavaa viivekuormaa

Keep-aliven vaikutus vasteaikaan

Kun keep-alive on käytössä:

– sama yhteys palvelee useita resursseja
– handshake tehdään vain kerran
– verkon viive pienenee

Tuloksena:

– nopeampi first paint
– lyhyempi sivun latausaika
– parempi käyttäjäkokemus

Tämä vaikutus korostuu erityisesti:

– mobiiliverkoissa
– korkean latenssin yhteyksissä
– kansainvälisessä liikenteessä

Vaikutus palvelimen kuormaan

Keep-alive ei auta vain käyttäjää. Se vaikuttaa myös palvelimen resurssien käyttöön.

Ilman keep-alivea:

– jokainen pyyntö avaa uuden yhteyden
– TCP-stack kuormittuu
– context switchien määrä kasvaa

Keep-aliven kanssa:

– vähemmän yhteydenavausoperaatioita
– vähemmän CPU-kuormaa
– parempi yhteyksien hyötysuhde

Tämä on erityisen tärkeää high-traffic WordPress-sivustoissa.

Keep-aliven varjopuolet

Keep-alive ei ole pelkkä ilmainen optimointi. Se tuo mukanaan myös kompromisseja.

Yhteydet jäävät auki

Kun yhteys pidetään avoinna:

– se varaa muistia
– se varaa socket-resursseja
– se vie yhteyskapasiteettia

Jos keep-alive timeout on liian pitkä:

– palvelin täyttyy idle-yhteyksistä
– uusia yhteyksiä ei voida avata
– vasteajat kasvavat

WordPressin hitaat pyynnöt

Jos WordPress-pyyntö:

– kestää pitkään
– odottaa tietokantaa
– tekee ulkoisia API-kutsuja

keep-alive-yhteys pysyy varattuna koko ajan. Tämä voi:

– vähentää samanaikaisten pyyntöjen määrää
– heikentää skaalautuvuutta

HTTP/2 ja HTTP/3 muuttavat tilannetta

Modernit protokollat:

– HTTP/2
– HTTP/3

rakentuvat keep-alive-ajattelun päälle. Ne:

– käyttävät yhtä yhteyttä
– multiplexaavat useita pyyntöjä
– vähentävät latenssia entisestään

WordPress-sivusto, joka käyttää HTTP/2:ta CDN:n tai modernin palvelimen kautta, hyötyy tästä automaattisesti.

Keep-alive ja CDN

Kun CDN on käytössä:

– käyttäjän ja CDN:n välinen keep-alive on nopea
– CDN pitää yhteydet origin-palvelimeen
– origin-kuorma pienenee

Tämä tekee keep-alivesta entistä tärkeämmän osan kokonaisarkkitehtuuria.

Yleiset virhekonfiguraatiot

Keep-alive pois päältä

Joissakin ympäristöissä:

– keep-alive on vahingossa pois käytöstä
– vanhat konfiguraatiot estävät sen

Tämä näkyy:

– hitaana sivulatauksena
– korkeana TCP-yhteysmääränä

Liian pitkä timeout

Jos keep-alive timeout on:

– kymmeniä sekunteja
– tai jopa minuutteja

palvelin voi täyttyä idle-yhteyksistä.

Yhteenveto

HTTP keep-alive on keskeinen tekijä WordPressin suorituskyvyssä, vaikka se ei olekaan WordPressin oma ominaisuus. Se:

– vähentää TCP-yhteyksien määrää
– pienentää latenssia
– parantaa sivun latausaikaa
– vähentää palvelimen kuormaa

Samalla se vaatii:

– oikein säädetyt timeout-arvot
– riittävät palvelinresurssit
– tasapainon yhteyksien määrän ja keston välillä

Ilman keep-alivea moderni WordPress-sivusto olisi kuin ravintola, jossa jokainen asiakas pakotetaan poistumaan ulos ja palaamaan takaisin jokaista suupalaa varten. Teknologisesti mahdollista, mutta käytännössä täysin järjetöntä.