Skip to content

Varnish Nedir?

Varnish bir HTTP hızlandırıcıdır(Ters Vekil Sunucusu, Reverse Proxy Server). Ziyaretçileri her ziyarette tekrar oluşturulan dinamik sayfalar yerine önbelleğine alınmış statik sayfalara yönlendirir ve sitenin hızlı bir şekilde açılmasını sağlar. Varnish’in en güzel özelliklerinden bir tanesi ise ne zaman içeriği dinamik olarak oluşturulmasını sağlayacağını bilmesidir. Bu durumda sadece gerek olduğu zaman sayfalar dinamik olarak oluşturulur.

Varnish basitçe, yapılan istekleri, belli kurallar ile cache’leyip istemciye dönen, genelde web sunucuların önünde konumlandırılan bir araç. İstekler Varnish’e geliyor, Varnish önbelleğinde varsa isteği buradan dönüyor, eğer yoksa sunucudan derleniyor. Varnish’in hızlı olmasının en büyük sebebi proxy için disk kullanmadan sadece ram kullanması ve log tutmak için yine disk kullanmamasıdır.

Örnek vermek gerekirse oluşan markup çıktısı her ne kadar ~20KB civarında olsa da, o 20KB’ı oluşturmak için, her istekte 5-10 MB RAM ve işlemci boşa harcanıyor. Ve siteye aynı anda 10.000 kullanıcı gelirse, 70-80 GB RAM’e ihtiyacınız oluyor! Toplamda ~20KB RAM işinizi görecekken 70-80 GB’lık bir sunucu bulmanız, yükü ona göre dağıtmanız ve bu sunucuları maintain etmeniz, en önemlisi bu sunuculara “para ödemeniz” gerekiyor. Varnish işte tam burada yardımınıza yetişiyor.

Daha aydınlatıcı olması için test edelim…

PHP ile basitçe 50ms’de dönen bir kod yazalım:

varns3

Şimdi apache üzerinde, mod_php ile çalışan bu adrese, anlık 100, toplam 5000 istek gönderelim:

varns

5000 isteğin tamamlanması 3.304 saniye sürmüş. Bu da saniyede toplam 1513 isteğe cevap verebilmişiz demek. Bir de Varnish ile deneyelim:

varns2

Bu sefer, 5000 istek, 0.307 saniyede döndü! Ve saniyede 16309.86 isteğe cevap verebilen bir sunucumuz oldu. Süper değil mi? 10 kattan daha fazla kazancımız oldu. Bu da kabaca, 10 tane sunucunun işini tek sunucuda yapabiliyoruz demek. cloudbunny

TR Kodlama GitHub'da!

TR Kodlama'da yer alan makaleleri GitHub üzerinden düzenleyebileceğinizi biliyor muyudunuz? Harika değil mi? Bu makale ile ilgili düzenleme yapmak isterseniz aşağıdaki butona tıklayınız!

GitHub'da Görüntüle ve Düzenle!