Bu sabah daha önceden duyduğum varnish cache’i inceleme ihtiyacı ile uyandım. Nerden ne alaka ben de bilmiyorum ama ilk işim bunu incelemek oldu.
Varnish web sitenizi hızlandırmak için kullanabileceğiniz açık kaynaklı, endüstri standartlarına uygun ve çok az kaynak harcayan anahtar bir yazılımdır. Varnish ile web sitenize gelen istekler cache’lenerek aynı istekler için tekrar tekrar veritabanına gidilmez, bu sayede web siteniz hızlanır.
Temel konfigürasyonu çok kolay, ben ubuntu üzerinde test ettim yani paket olarak kurdum. Kurulumu yaptıktan sonra /etc/varnish/default.vcl içerisinden aşağıdaki ayarı yaptım:
backend default {
.host = “127.0.0.1″;
.port = “80″;
}
Bu ayar ile varnish 80. portu dinliyor oluyor. Yani apache portunu. Daha sonra aşağıdaki komut satırı ile başlattım:
varnishd -f /etc/varnish/default.vcl -s malloc,1G -T 127.0.0.1:2000 -a 0.0.0.0:8080
-f /etc/varnish/default.vcl parametresi ile ayar dosyasının adresini,
-s malloc,1G ile cache’i 1G’lık hafıza olarak kullanmasını (disk vs de oluyor tabiki)
-T 127.0.0.1:2000 parametresi ile text tabanlı yönetim ekranının portunu (bu portun dışardan erişilemez bir port olması güvenlik açısından önemli),
-a 0.0.0.0:8080 parametresi ile çalışacağı ip ve portu belirtmiş oldum.
Bundan sonra apache tarafında şöyle basit bir php yazdım:
$t1 = time();
sleep(3);
$t2 = time();
echo 'elapsed ' . ($t2-$t1) . ' second(s)';
Bu kod 3 sn bekliyor. Bu kodu http://localhost:80/cache/test.php üzerinden çalıştırdığım zaman 3 sn bekliyor. Tekrar çağırdığım zaman gene 3 sn bekliyor. Bunu kodunuzun veritabanına bağlandığını, query’ler vs çalıştırdığı şeklinde düşünebilirsiniz.
Aynı kaynağa varnish üzerinden erişmek için 8080 portunu set ettiğimiz için http://localhost:8080/cache/test.php adresinden eriştiğim zaman ilk istekde 3 sn bekliyor ancak daha sonraki çağırılarda sonuç ms mertebesinde hızlı geliyor.
Detaylıca incelemek gerekli tabi, örneğin session bilgisi içeren sayfalarda cache’leme nasıl oluyor gibi. Ama temelde basit sayfalarınız varsa ve koda girip cache yazmak istemiyorsanız bence harika bir çözüm.
Sitesinde çeşitli örnekler vermişler, örneğin eskiden 14 sunucuda çalışan uygulama artık 2 sunucu ile çalışabiliyormuş. Bir de varnish ile saniyede 275,000 isteği karşılamışlar. Breh breh
http://www.varnish-cache.org/