Varnish käytössä blogissani
Nopeutin blogini toimintaa hiukan ottamalla käyttöön Varnishin. Se on HTTP-reverse-proxy, joka pitää webbisivuja välimuistissa ja palvelee niitä tehokkaammin kuin Apache ja Django pystyvät niitä tuottamaan. Pikaisesti testattuna tämä vaatimaton virtuaalikoneeni pystyy palvelemaan nyt noin 400 hakupyyntöä sekunnissa, kun se ilman Varnishia jäi alle sadan.
Varnish on siitä mukava, että se osaa cachettaa sivuja, vaikkei niissä olisi "virallisia" Cache-Control-headereita. VCL-kielellä voi rakentaa oman logiikan sille, mitä cachetetaan ja mitä ei. Oletuksena sellaiset sivut jätetään pois cachesta, joissa on käytetty cookieita tai authorization-headereita, jotta käyttäjäkohtainen data pysyisi erillään.
Varnishissa on myös näpsäkkä CLI-rajapinta, jolla voi esimerkiksi tyhjentää haluttuja sivuja cachesta. Tein omaa blogiani varten tällaisen apufunktion, joka tyhjentää koko välimuistin aina silloin, kun joku kirjoittaa uuden kommentin tai itse kirjoitan uuden artikkelin:
def clear_varnish(): try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('127.0.0.1', 6082)) s.sendall('url.purge .*\n') s.recv(4096) s.close() except: pass
Tämä on toki aika tehotonta, jos saitilla on paljon liikennettä ja cache tyhjenee vähän väliä. Silloin on fiksumpaa käyttää jotain muuta ratkaisua.
2 Comments
Apache näyttää jumittavan silloin tällöin kokonaan jolloin tulee Guru Meditationia, vaikka normaalisti toimii ihan hyvin Varnishin kautta. Yritän tutkia asiaa.
Löytyihän se syykin sieltä. Apacheen oli jäänyt pariin paikkaan ProxyPass, joka aiheutti rekursiivisen haun takaisin Varnishiin ja siitä jälleen Apacheen jne.
You can use Markdown to format your comment:
Separate paragraphs in your text with two newlines