Linux palvelimen optimointi käänteisproxyn avulla

Tehtävä: http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-9-ja-10-syksylla-2013

“h7:
– Asenna WordPress ja tee siihen esimerkkisisältöä
– Mittaa WP:n tehoa. Vertaile etusivun ja alasivujen nopeutta siihen, että tallennat saman sisällön staattiseksi. Analysoi mittaustulokset.
– Asenna käänteisproxy. Kokeile, että dynaamiset ominaisuudet, kuten kommenttien jättö, toimivat edelleen. Mittaa ja analysoi tulokset. Vertaa tilanteeseen ilman käänteisproxya.”

Aloitan tehtävän tekemisen tilanteesta missä olen asentanut LAMP ympäristön ja wordpressin tietokoneelleni, ohjeita näiden tekemiseen löydät seuraavista:

LAMP: https://henrimikkonen44.wordpress.com/2013/09/27/linux-xubuntu-ja-lampn-asennus/

WordPress: https://henrimikkonen44.wordpress.com/2013/10/04/wordpressin-asentaminen-linux-xubuntu-palvelimelle/

Palvelimen kuormittamista ab:lla eli apache benchmark ohjelmalla.Minun ei tarvinnut asentaa ab:ta sillä se on ilmeissti tullut apache asennuksen mukana. Kuormitan wordpress sivustoja jotka käyttää mysql tietokantaa joten se on luultavasti huomattavasti hitaampi kuin staattinen sivu missä ei ole lainkaan mysql tietokantahakuja.

ajoin seuraavan komennon:

$ ab -n 100 -c 100 http://localhost/~henri/wordpress/

Sain seuraavan laiset tulokset:

“Percentage of the requests served within a certain time (ms)
50%   1613

100%   2916 (longest request)”

50% pyynöistä palveltiin noin puolestatoista sekunnissa ja pisimpään palvelimella kesti noin kolme sekunttia.

Eli jo melko pitkä aika kärsimättömille nykynopeuksiin tottuneille ihmisille. Vertaukseksi kopion saman sivun toiseen hakemistoon jotta pääsen hakemaan sivua ilman mysql tietokanta liitoksia. Menin osoitteeseen http://localhost/~henri/wordpress/ ja valitsin firefoxin yläkulmasta File -> Save page as ja navigoin public_html kansiooni ja tallensin sen nimellä wptest.html.

Ajoin nyt tälle staattiselle sivulle saman testin:

$ ab -n100 -c100 http://localhost/~henri/wptest/

tulokset:

Percentage of the requests served within a certain time (ms)
50%      5

100%      6 (longest request)

Eli 50% pyynnöistä palveltiin jopa 5 millisekunnissa ja hitainkin vain yhden millisekuntin erolla. Se on jo varsin nopea vastausaika.

Seuraavaksi asennamme palvelimelle käänteisproxyn jotta saisimme  mysql tietokantaa käyttävän wordpress sivuston vastaamaan pyyntöihin huomattavasti nopeammin.

$ sudo apt-get install varnish

Tämän jälkeen laitamme proxyn ottamaan vastaan kaikki pyynnöt porttiin 80 ja vaihdamme apachalle uuden portin. Ensin apachalle uusi porttinumero:

$ sudoedit /etc/apache2/ports.conf

muutamme kohtiin NameVirtualHost ja Listen numerot 8080 ja tallennamme tiedoston:

NameVirtualHost *:8080
Listen 8080

$ sudo service apache2 restart

Sitten muutamme varnishin kuuntelemaan porttia 80:

$ sudoedit /etc/default/varnish

## Alternative 2, Configuration with VCL
#
# Listen on port 6081, administration on localhost:6082, and forward to
# one content server selected by the vcl file, based on the request.  Use a 1GB
# fixed-size cache file.
#
DAEMON_OPTS=”-a :80 \

Tallennus ja varnishin uudelleen käynnistys

$ sudo service restart varnish restart

Kokeilin vielä että kommentointi ja muut dynaamiset toiminnot toimivat:

postintest

Nyt on tarvittavat asetukset tehty ja voimme testata uudelleen kuormittaa wordpress sivustoa:

$ ab -n 100 -c 100 http://localhost/~henri/wordpress/

Tulokset:

Percentage of the requests served within a certain time (ms)

50%      8

100%     10 (longest request)

Puolet pyynnöistä sai vastauksen noin 8 millisekunnissa ja pisinkin sai jo 10 millisekunnissa. Eli vastaukset tulivat huomattavasti nopeammin käänteisporxyn kanssa.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s