Μετάβαση στο περιεχόμενο
EuroVPSEuroVPS
Περιοχή πελατών

Το Varnish Cache εξηγημένο

Αν είστε αρχάριοι στο Varnish και θέλετε να μάθετε περισσότερα για αυτό το εξωφρενικά γρήγορο εργαλείο caching, αυτό το άρθρο είναι για εσάς. Θα μιλήσουμε για το τι είναι το Varnish, πώς δουλεύει και σε ποιους ταιριάζει.

Από Robert Hughes

Ενημερώθηκε 22 Οκτωβρίου 20265 λεπτά ανάγνωσης
Εικόνα εξωφύλλου: Varnish cache

Το Varnish έχει γίνει συνώνυμο της επιτάχυνσης HTTP υψηλών επιδόσεων. Το Varnish Cache είναι ένας open source reverse HTTP proxy επιταχυντής που είναι εξαιρετικός στο να μειώνει το φορτίο του web server σας. Το Varnish τοποθετείται μπροστά από τον web server και λειτουργεί ως proxy που γεφυρώνει τον browser με τον server.

Ο Poul-Henning Kamp, δημιουργός του Varnish
Poul-Henning Kamp (ο δημιουργός του Varnish)

Το project Varnish ήταν ιδέα του Δανού αρχιτέκτονα τεχνολογίας Poul-Henning Kamp. Γνωστός σύμβουλος FreeBSD, ο Kamp ήταν ο επικεφαλής προγραμματιστής του Varnish.

Το project Varnish ξεκίνησε από τον διαδικτυακό κλάδο της νορβηγικής εφημερίδας Verdens Gang. Αλλά το λογισμικό είχε τόση επιτυχία που τελικά αποσχίστηκε σε ξεχωριστή εταιρεία.

Μην ανησυχείτε όμως, παραμένει δωρεάν και πλήρως open source λογισμικό, διαθέσιμο με άδεια BSD δύο ρητρών. Αν θέλετε εμπορική υποστήριξη, είναι διαθέσιμη από τη Varnish Software.

Σήμερα, η υποστήριξη, η διαχείριση και η ανάπτυξη του Varnish γίνονται υπό την ομπρέλα της Varnish Software.

Πώς δουλεύει το Varnish;

Σκεφτείτε το εξής σενάριο. Μπαίνετε σε μια πολυσύχναστη καφετέρια και παραγγέλνετε τον καφέ φίλτρου του μαγαζιού. Ο άνθρωπος στον πάγκο πρώτα ελέγχει αν υπάρχει έτοιμη φρέσκια κανάτα να σερβίρει.

Αν υπάρχει, παίρνετε το φλιτζάνι σας αμέσως. Αν όχι, η παραγγελία πάει στον barista να φτιάξει νέα κανάτα. Το Varnish κάνει τη δουλειά του ανθρώπου στον πάγκο.

Το Varnish κάθεται μπροστά από τον web server σας, και την πρώτη φορά που ένας επισκέπτης ζητά μια ιστοσελίδα, το Varnish παίρνει το αίτημα και το περνά στον backend server. Ο backend server επεξεργάζεται το αίτημα και στέλνει την απόκριση πίσω στον browser.

Το Varnish, εν τω μεταξύ, κάνει «cache» το αποδιδόμενο περιεχόμενο και το αποθηκεύει σε υπερταχεία μνήμη RAM.

Κάθε επόμενο αίτημα για την ίδια ιστοσελίδα εξυπηρετείται απευθείας από την αποθηκευμένη εκδοχή (στη μνήμη RAM!) χωρίς να ενοχλείται ο web server ή η βάση δεδομένων.

Ποιοι χρησιμοποιούν το Varnish;

Πολλά ειδησεογραφικά sites και sites περιεχομένου με μεγάλη κίνηση χρησιμοποιούν το Varnish.

Το Varnish προσφέρει μεγάλα οφέλη επίδοσης σε websites με βαρύ περιεχόμενο και μεγάλη κίνηση. Μπορεί να χρησιμοποιηθεί για cache τόσο στατικού όσο και δυναμικού περιεχομένου.

Υπάρχει η κοινή παρανόηση ότι το Varnish είναι μόνο για στατικό περιεχόμενο, αλλά με λίγες ρυθμίσεις στο .VCL μπορεί να δουλέψει εξαιρετικά ακόμη και για δυναμικά websites και εφαρμογές κινητών.

Γιατί είναι τόσο γρήγορο το Varnish;

Αν θέλετε να εξυπηρετείτε χιλιάδες ταυτόχρονα αιτήματα ανά δευτερόλεπτο χωρίς να υπερφορτώνετε τον web server σας, το Varnish είναι ένας από τους καλύτερους επιταχυντές HTTP που υπάρχουν.

image: src /blog/wp-content/uploads/2012/10/varnish-diagram.jpg (unchanged); alt: Διάγραμμα του Varnish μπροστά από τον web server

Μέσα στις ρυθμίσεις του Varnish μπορείτε να ορίσετε αν θέλετε να αποθηκεύει την cache στον σκληρό δίσκο ή στη μνήμη RAM.

Για να έχετε την άμεση αίσθηση «κλικ και είναι εκεί», θα θέλετε αυτή η cache να αποθηκεύεται αποκλειστικά στη RAM σας.

Με μια σωστά ρυθμισμένη εγκατάσταση Varnish θα δείτε πολύ χαμηλότερο χρόνο απόκρισης και τεράστια μείωση στη χρήση πόρων του server.

Είναι δύσκολη η ρύθμιση του Varnish;

Το RHEL και τα παράγωγά του διαθέτουν πακέτο Varnish.

Το Varnish έρχεται με μια βασική προεπιλεγμένη διαμόρφωση που μπορεί να χρησιμοποιηθεί ως έχει για να τρέξει επιτάχυνση HTTP με ελάχιστη φασαρία. Το ίδιο το Varnish δεν τερματίζει HTTPS, οπότε σε ένα σύγχρονο site κάθεται πίσω από έναν TLS terminator όπως ο HAProxy ή ο nginx.

Το Varnish σας δίνει ένα αρχείο Varnish Configuration Language (VCL), όπου παίζετε με τις ρυθμίσεις για να βελτιστοποιήσετε την επίδοσή του. Το αρχείο VCL λέει στο Varnish ακριβώς πώς να χειρίζεται τη διαδικασία του caching.

Πότε και τι να κάνει cache, πότε να μην κάνει, και πόσο να κρατά το αποθηκευμένο περιεχόμενο στη μνήμη.

Αν κατακτήσετε το .VCL αποκτάτε υπερδυνάμεις, που σας επιτρέπουν να τροποποιείτε σχεδόν κάθε πτυχή ενός αιτήματος και μιας απόκρισης HTTP.

Πότε πρέπει να χρησιμοποιήσετε το Varnish

  1. Αν έχετε ένα website με βαρύ περιεχόμενο και συχνές αιχμές κίνησης
  2. Το Varnish είναι εξαιρετικό για servers με βαρύ φορτίο βάσης δεδομένων. Κάνοντας cache τα πιο συνηθισμένα web αιτήματα, ο MySQL server σας μπορεί να ξεκουραστεί λίγο.
  3. Αν θέλετε να μειώσετε τη δραστηριότητα του δίσκου σας, παρατείνοντας το προσδόκιμο ζωής του.
  4. Αν ένας web server και μία βάση δεδομένων πρέπει να εξυπηρετήσουν χιλιάδες ταυτόχρονους επισκέπτες.

Πότε δεν πρέπει να χρησιμοποιήσετε το Varnish;

Υπάρχουν πολλοί ευκολότεροι τρόποι για μεγάλες βελτιώσεις επίδοσης, όπως το micro caching του NGiNX, που μπορείτε να δοκιμάσετε πριν καταφύγετε στο Varnish.

Για μικρά websites με λιγότερες από 1.000 προβολές σελίδων την ημέρα, μάλλον θα είστε μια χαρά με ένα βελτιστοποιημένο LAMP stack ή NGiNX με PHP-FPM.

Λόγω της πολυπλοκότητας της προσαρμογής του αρχείου .VCL στις συγκεκριμένες απαιτήσεις σας, μερικές φορές απλώς δεν αξίζει τον κόπο να χρησιμοποιήσετε το Varnish. Το να κάνετε το Varnish να συνεργαστεί σωστά με δυναμικό περιεχόμενο είναι δύσκολο. Σίγουρα, μπορείτε να χρησιμοποιήσετε ESI «hole punching» για να εξυπηρετείτε περιεχόμενο ανά χρήστη, αλλά είναι πραγματικά απαραίτητο;

Ελέγξτε πρώτα τα χαμηλά κρεμασμένα φρούτα

Πριν από το Varnish, κάντε τις φθηνότερες διορθώσεις: βελτιστοποίηση εικόνων, minified CSS και JavaScript, ρύθμιση της MySQL.

Σχετικό άρθρο: Οι 10 κορυφαίοι λόγοι που το site σας φορτώνει αργά (και τα βήματα για να το διορθώσετε!)

Συμπέρασμα

Το να στήσετε το Varnish ώστε να εξυπηρετεί σωστά περιεχόμενο και να ακολουθεί τις απαιτήσεις του οργανισμού σας μπορεί να είναι δύσκολο. Οι κανόνες λήξης της cache, το time to live, το caching URL και οι απαιτήσεις object caching στο Varnish είναι ιδιαίτερα πολύπλοκα. Ως αποτέλεσμα, πολλές εταιρείες συμβούλων γεννήθηκαν από την ανάγκη να γίνουν «υλοποιήσεις Varnish» σε περιβάλλοντα πελατών.

Στην EuroVPS τρέχουμε Varnish μπροστά από sites μεγάλης κίνησης, και οι μηχανικοί μας μπορούν να σας βοηθήσουν να σχεδιάσετε το επίπεδο caching για το δικό σας.

Από το αρχείο του blog της EuroVPS, πρώτη δημοσίευση 17 Οκτωβρίου 2012.

Όλες οι σημειώσεις