Varnish vs Nginx Cache

Vernik, uzun süredir sitemizde kullandığımız yığının bir parçasıydı ve tam sayfa önbelleklemeyi ele alıyor, ancak bazı kıyaslamalardan sonra Nginx FastCGI Önbellek aslında daha iyi bir seçim gibi görünüyor.

Ashley’in Hosting WordPress Yourself serisini izlediyseniz, muhtemelen yığına aşina olursunuz, ancak tazeleme olarak bir diyagram var:

Nginx, tam sayfa önbellekleme için FastCGI Önbellek kullanır, PHP-FPM PHP'yi işler, Redis nesne önbelleğini yönetir ve MySQL en arkadadır. Bu site (deliciousbrains.com) iki buçuk yıl önce kurduğumdan beri benzer bir yığın çalıştırıyor:

Birkaç küçük fark var:

Digital Ocean ve Ubuntu yerine Linode ve CentOS
HTTP istekleri yeniden yönlendirmek yerine HTTPS'ye sunuluyor
PHP-FPM yerine Apache mod_php
Nesne önbelleği için Redis yerine APC

Ancak en büyük fark, kesinlikle Vernik varlığı ve bunu tam sayfa önbellekleme için FastCGI Önbellek üzerinde kullanmaktır. Vernik HTTPS'yi desteklemediğinden, önünde Nginx var, HTTPS bitlerini ve Vernik için proxy isteklerini ele alıyoruz. Vernik daha sonra arka uçta Apache'ye vekalet eder.

Neden Apache?

Daha önce yazdığım gibi, özellikle sunucumun ve çalışanlarının gelir getirmeye bağlı olduğu kendi sunucumu yönetmeyle ilgili şüphelerim vardı. Apache ile gittim çünkü iyi biliyordum. Nginx + PHP-FPM karşılaştırıldığında nispeten yeniydi ve hiç bilmiyordum.

Ayrıca web'de gezinirken arada sırada “Ağ Geçidi 502” hataları (Nginx zaman aşımı hatası) görüyordum. Bu birçok şeyden kaynaklanmış olabilir, ancak bunun temel olarak set_time_limit () PHP işlevinin PHP-FPM çalıştırırken herhangi bir etkisi olmadığı varsayılmıştır. Kesinlikle karşı bir grev.

O zamandan beri Nginx + PHP-FPM ile biraz oynadım ve üretimde kullanmaktan daha fazla güveniyorum. Özellikle PHP-FPM’nin zaman aşımı ayarları üzerinde kontrolüm olduğunda.

Neden Varnish?

Vernik hakkında güzel şeyler okuyordum. Tam sayfa önbellekleme gerçekten çok iyi sonuç verdi ve ter dökmeden büyük trafiği kaldırabilir. Web sunucuları kurulumlarına ekliyorlardı. WP Engine'in onu kullandığına inanıyorum.

Böylece 2012'de denemeye değer olduğuna karar verdik. Varnish ile bir Amazon EC2 örneği oluşturdum ve blogumu bir yıl boyunca çalıştırdım. Vernik ile rahatladım. İyi çalıştı.

Sunucuyu deliciousbrains.com için kurduğumda, orada da çalıştırmakta kendimi iyi hissettim. Ve yukarıda da söylediğim gibi, FastCGI Önbellek seçeneklerini bir yana, Nginx'i hiç bilmiyordum. FastCGI Önbellek'in 2012'de olgunlaşmamış olması da mümkün değil, emin değilim.

Neden Bugün Varnish?

Bugün yeni bir sunucu kurarsam, hala Vernik ile devam eder miyim?

Ashley’in dizisinin 4. bölümünü ilk incelediğimde, Varnish’in FastCGI Önbelleğini performansta yok edeceğini düşündüm çünkü FastCGI Önbellek diske kaydederken önbelleğe alınmış sayfaları belleğe depolar.

Ashley'e bunu sorduktan sonra, FastCGI Önbellek klasörünü bellekte saklanacak şekilde yapılandırabilirsiniz. Kıyaslama zamanı!

FastCGI Önbellek (Disk) Kıyaslaması

Ashley'nin makalesinde kullandığı benzer bir ölçüt kullanmayı denedim. Ubuntu'nun 60 saniyelik bir süre boyunca 1 ila 1.000 eşzamanlı istek çalıştırdığı bir Digital Ocean 2GB sunucusu çalıştırdım. Normal HTTP üzerinden yapılan tüm istekler.


Ashley’in karşılaştırmalı değerlendirmesine benzer bir sonuç. Tepki süresi iki kez Ashley’di, ancak bunun nedeni büyük olasılıkla Digital Ocean veri merkezim (Toronto) ile kıyaslama taleplerinin kaynağı (Virginia) arasındaki mesafe farkıydı. Ashley İrlanda ve Londra arasında koşuyordu. Testimdeki verileri 3 kat transfer ettim, bu da bir etki yaratabilirdi. Her durumda, bu aşağıdaki karşılaştırmalar için temelimizdir.

FastCGI Önbelleğini Belleği Kullanacak Şekilde Yapılandırma

FastCGI Önbellek klasörünün bellekten sunulmasını sağlamak için Linux’un bir klasörü belleğe bağlama yeteneğini kullanırız. Favori düzenleyicimde / etc / fstab dosyasını düzenledim ve şu satırı ekledim:

tmpfs /sites/bradt.ca/cache tmpfs defaults,size=100M 0 0

daha hızlı erişim için 100 MB'a kadar önbellek dosyalarının hafızada saklanmasını sağlar. Açıkçası kendi siteniz için klasör yolunu ve boyutunu değiştirebilirsiniz.

Şimdi editörden çıktım ve aşağıdaki komutu çalıştırdım:

mount -a

Bu, /etc/fstab içinde yapılandırılmış tüm dosya sistemlerini bağlar. Şimdi çalışıp çalışmadığını görelim:

df -ah

Çıktıda klasörünüzü görmelisiniz.

FastCGI Önbellek (Bellek) Deneyleri

Şimdi aynı ölçütü çalıştırarak şunları elde ederiz:


Şaşırtıcı bir şekilde biraz daha kötü performans gösterdi, ancak o kadar hafif ki hiç önemli değil (yani tekrar çalıştırırsak muhtemelen biraz daha iyi performans gösterir).

Ashley bunun muhtemel olduğunu tahmin ediyor çünkü “disk” aslında katı hal (SSD) ve sabit diskleri döndürmekten çok bellek performansına çok daha yakın. Bana iyi bir tahmin gibi geliyor.

Varnish Deneyleri

Şimdi Varnish ile aynı ölçütü denemenin zamanı geldi. Vernik yapılandırmam için bu şablonu kullanıyorum.

Yine performansta bir düşüş görüyoruz, ancak bu sefer önemli. Ortalama tepki 82ms'den 100ms'ye yükselmiştir. Ne olduğunu görmek için zaman içindeki yanıt sürelerine bakalım:

Görünüşe göre işler yaklaşık 500 eşzamanlı kullanıcıya kadar iyi, o zaman biraz mücadele etmeye başlıyor. New Relic'e baktığımızda, Vernik oldukça büyük bir CPU artışına neden oluyor:



HTTPS

Bir yan not olarak, HTTPS'nin sunucu üzerinde bu ölçekte büyük bir etkisi vardır (1.000 eşzamanlı kullanıcı). İlk FastCGI Önbellek (Disk) karşılaştırmasını HTTPS üzerinden çalıştırarak şaşırtıcı derecede farklı bir sonuç elde ettim:

Yanıt sürelerine baktığınızda, yanıt süresi ile eşzamanlı kullanıcı sayısı arasında oldukça sağlam bir ilişki olduğunu görebilirsiniz.

Yeni Relic'e baktığımızda Nginx'in büyük bir CPU artışına neden olduğunu görebiliriz:


Bu yüzden Nginx'in şifreleme / şifre çözme için bazı ekstra CPU gerektiriyor gibi görünüyor. Ayrıca, TLS anlaşmasını yapma isteklerinin her biri için ekstra ağ gecikmesi vardır.

Burada bir şeyleri perspektife sokmak için, sunucu yavaş yavaş yavaşlamaya başlamadan önce 250 eşzamanlı kullanıcıya kadar iyi sonuç verdi. Bu ayda 20 $ (Digital Ocean 2GB) için oldukça iyi.


Sonuç


Verniğin burada daha iyi performans gösterdiğine şaşırdım. Bunun destede Vernik olması için ana satış noktası olması gerekiyordu.

Vernik kesinlikle daha yapılandırılabilir, ancak gerçekten ne kadar yapılandırmaya ihtiyacınız var? FastCGI Cache çoğu site için oldukça esnektir.

Parça önbellekleme ile ilgileniyorsanız, Vernik'i kullanmak isteyebilirsiniz, böylece Kenar Tarafı İçerme (ESI) özelliğini kullanabilirsiniz. Bir girişle ilgileniyorsanız Rachel Andrew, ESI hakkında Smashing Magazine için güzel bir makale yaptı.

Varnish'in FastCGI Önbelleği'nin henüz sahip olmadığı 4.0'da eklediği güzel bir özellik var: önbelleğin süresi dolduğunda eski içerik sunma ve yeni içerik getirmeyi tetikleme yeteneği. FastCGI Önbellek ile içerik isteğinde bulunduğunuzda ve önbellek sona erdiğinde, isteği çok yavaşlatan arka uçtan yeni içerik getirmesini beklemeniz gerekir. 40 ms tepki süresi ile 200 ms arasındaki farktır. Beş kat daha yavaştır.

Fastcgi_cache_use_stale yönergesine güncelleme ekleyebilirsiniz, ancak bu sorunu çözmez. Süresi dolmuş içeriğe isabet eden ilk istek, yeni içeriğin arka uçtan alınmasını beklemek zorundadır ve bu süre zarfında gelen eşzamanlı istekler eski içeriği alır. Güzel bir özellik, ama yine de, sorunu çözmez.

Şu anda bildiğim kadarıyla, kurduğum bir sonraki sunucu yığınına Vernik eklemeyi zahmet etmem. Sadece sunucuda çalışan ekstra arka plan programına, yönetilecek ekstra yapılandırmaya ve en önemlisi ekstra hata noktasına değmez. Ama kim bilir, yarın fikrimi değiştiren bir şey öğrenebilirim.

Varnish ve / veya Nginx FastCGI Cache kullandınız mı? Belki de sayfa önbelleğe almak için başka bir şey kullandınız? Yorumlarda bize bildirin.

Not: Bu yazı : sipnupwp'den alınıp tamamen çeviri yapılmış ve kelime - cümler hataları düzeltilmemiştir en kısa zamanda güncellenecektir.
About author
Slaweally
Ben Ali Çömez (Slaweally) Uzun yıllar internet sektöründe zaman geçirdikten sonra tecrübelerimi sizinle paylaşmak için buradayım.

Comments

There are no comments to display.

genel information

Yazar
Slaweally
Görüntüleme
269
Last update
Author rating
5.00 yıldız(lar)

More in Genel sistem Dökümanları

More from Slaweally