WordPress için Redis tam sayfa önbelleği vs nginx fastcgi önbelleği

Önbellekleme, web sitesinin hızının ve performansının bel kemiğidir. Bu, WordPress sitenizin başarısı için çok önemlidir. Siteniz büyük ve güçlü bir sunucuya gönderilse bile, önbelleklemeyi etkinleştirmezseniz tarar. Web sitelerini günde on binlerce kullanıcıya sunmak, yalnızca akıllı önbellekleme tekniği nedeniyle mümkündür. Bu makalede, birbirinden iki farklı WordPress sayfası önbelleğe alma çözümlerinden şikayet edeceğim. Nginx Fastcgi önbelleği denenmiş ve test edilen kıdemli bir önbellek sayfası olsa da, REDIS tam sayfa önbelleği nispeten belirsizdir. Yukarıda kim çıkacak ve önce yük altında kim yok edilecek? Yakında bileceğiniz gibi, hem artıları hem de eksileri var, ancak sadece bir kazanan var.
Emniyet kemeri. Hadi büyütelim! WordPress 101 önbelleğe alınması WordPress, birçok hareketli parçanın çalışmasını gerektirir. Kullanıcı WordPress sitesinden bir sayfa her sorduğunda, istek ilk olarak sunucu tarafından ayrıştırılır. Sunucu istenen sayfaları kolayca sunamıyorsa, sunucu ilgili PHP komut dosyasını işler ve sayfaları dinamik olarak birleştirir. Bazen bu, ek veri toplamak için veritabanı sorgularını da içerir. Genel bir kural olarak, talep ne kadar uzun sürerse, sunucu yanıtı o kadar yavaş olur. Aynı anda birçok kullanıcı varsa, tüm paralel istekleri işlemeye çalışırken sunucu donabilir.
Önbellekleme, daha önce işlenmiş istekleri depolayarak ve göndererek sunucu yanıtını hızlandırmaya yardımcı olur. Bir sunucu, farklı veri türlerini depolamak için birçok önbellek katmanını yayabilir.

Önbellek katmanları sayfası kullanıcılara yakın (kaynak: spinupwp) PHP ve veritabanı bazlı uygulamalar için WordPress gibi dört ana sunucu tarafı önbellek çözümü türü vardır: nesne önbellekleme, önbellekleme sayfası, CDN önbellekleme. Nesne önbelleğe alınması hakkında derinlemesine WP roket makalesindeki her şey hakkında daha fazla bilgi edinebilirsiniz. Bu makale, sayfa önbellek çözümlerinin karşılaştırılmasına odaklanmaktadır, ancak kendinizi nesne önbelleğinin temellerine aşina olmanızı öneririm. Test sitesini hazırlamak ve sunucumun Testi yapmak için DigitalOcean’dan standart bir damlacık 10 $ kullanacağı. Bellek ve bilgi işlem kaynaklarının uygun bir karışımı ile bu, WordPress sitesini test etmek için mükemmel bir sunucudur. Damlacık yapılandırması 2 GB RAM, 1 CPU, 50 GB SSD depolama ve 2 TB transferi içerir. WordPress test sitesini Debian tabanlı kazıklara (Linux, Nginx, MariaDB ve PHP 7.3) yükledim. Test sahasını vurgulamak için, WooCommerce ve Elementors kullanmaya değer statik ve dinamik öğelerin bir karışımına girecek şekilde ayarladım.
Sayfa önbelleğimin karşılaştırılması için kullanılan WordPress test sitesi, temel siteyi GTMetrix web sitesi hız test aracı ile test etti. Test raporundan görebileceğiniz gibi, performans optimize edilmedi.

GTMetrix Stres Testi Siteleri için Rapor Önbelleksiz Önbellek Olmadan Test Taban Siteleri Web Sitesini Test etmek için Loader.io adlı ücretsiz performans test aracı kullanacağım. Onların serbest seviyeleri, 10.000’e kadar müşteriyle herhangi bir web sitesinin iki URL’sini bir dakika birlikte test etmenizi sağlar. Kullanım durumumuz için fazlasıyla yeterli. Not: Alan adını merak ediyorsanız, kullanılmayan kişisel bir alandır. Let’s Encrypt gibi imza yetkilisinden SSL sertifikalarını yüklemek için gerçek alanda yayınlanan bir siteye sahip olmak çok önemlidir. Yüklü bir SSL sertifikasıyla, site her benzersiz müşterinin isteği için bir HTTPS el sıkışma yapmalıdır. Bu, stres testi sırasında gerçek dünyanın kullanımını daha iyi taklit eder. Temel site için Loader.io testinin sonuçları Sol taraftaki turuncu kutudaki test parametrelerini kontrol edebilirsiniz. 1 dakikalık test parametreleri için 0 ila 200 istemciye dikkat edin. Bu, Loader.io’nun web sitesinin, aktif istemci sayısını 1 dakikalık bir süre için yavaşça 0’dan 100’e çıkaracağı anlamına gelir. Görüntülenen grafikte, yeşil çizgi birlikte istemci sayısını temsil eder ve mavi çizgi ortalama sunucu yanıt süresini temsil eder. Yanıt süresinin artan müşteri sayısıyla birlikte süzüldüğünü görebilirsiniz. Loader.io, talebin% 50’sinden fazlası başarısız olduğu için 36 saniye sonra testi iptal etti (zaman sınırı veya hata yanıtı HTTP 400/500). Buna ek olarak, 17.33 saniyelik ortalama yanıt süresi de kullanıcı deneyimi için iyi bir işaret değildir.

Ayrıntılı sekmenin kontrol edilmesi, sunucunun bekleme süresinin ne zaman başladığını daha iyi anlamanızı sağlar. 25 -saniye işaretinde başladığını görebilirsiniz. Bu, testi tekrar çalıştırdığım 500 dahili sunucu hatası, bu sefer istemci sayısını 100 ile sınırlandırıyor. Temel site, bu minimum yükün altında bile görünmek için mücadele eder.

Testi en fazla 100 aktif istemci ile tekrarlamak Test bu sefer bir dakika boyunca çalışır, ancak ortalama sunucu yanıt süresi hala kabul edilemez. Her etkin kullanıcı sunucuyu vurgular, bu da diğer tüm kullanıcılara yavaş yanıt verir. Sunucunun zaman sınırı hala hayatta kalır.
Sunucunun zaman sınırı kalır, çünkü aktif istemcilerin sayısı yukarıdaki grafikten artar, sunucu bekleme süresinin testteki 38 saniyelik işarette gerçekleşmeye başladığını görürsünüz.

38. saniyede 68 aktif müşteri var, şimdi 100 ve 200 aktif müşteri olduğunda temel site performansının nasıl olduğuna dair adil bir resminiz var. Sunucuda etkinleştirilen Redis Page Cache veya Nginx Fastcgi önbelleği ile aynı testi yapma zamanı. Redis Yard Önbelleği nedir? Redis (uzak Sözlük Sunucusu), veritabanı, önbellek, proxy ve daha fazlası olarak kullanılacak çok hızlı olan bellekte veri depolama alanıdır.

Redis, verileri fiziksel disklerde veya SSD’lerde depolayan geleneksel veritabanlarının aksine verileri bellekte sakladığından, Redis çok hızlı bir şekilde veri arayabilir ve gönderebilir. Bellekte depolamanın bir web sunucusunda tartışılması daha pahalı olduğundan, REDIS, veritabanı sorgularının sonuçları ve kalıcı oturumlar gibi daha küçük dosyaları depolamak için idealdir. Böylece, Redis genellikle bir sayfa sayfasını değil, nesne önbelleğini etkinleştirmek için kullanılır. Yeni için yeni alan sağlamak için daha uzun önbellek sayfalarını kaldırarak sunucunun sınırlı değişken belleğini kullanmasını sağlamak için MaxMemory #MB ve MaxMemory-Policy Allkeys-LRU Redis’in direktörünü kullanıyor.

WordPress.org Repo Redis Sayfa önbellekleri üzerindeki Redis Page önbellek eklentisi, Redis Nesnesi önbelleğinin çalışma şekli gibi bellekte tam sayfa önbellek önbelleği sunar. Teknik olarak, bu onu çok hızlı bir önbellek haline getirecektir. Redis sayfası önbellek eklentisini etkinleştirmek için Redis Dokümantasyon Sayfası önbelleğinin nasıl etkinleştirilmesi biraz tutarsızdır. Birkaç deney ve hatadan sonra düzenlememde başarılı oldum. Takip ettiğim adımlar: 1. Eklentiyi yüklemeden önce, REDIS sunucusunu web sunucunuza yüklediğinizden ve çalıştırdığınızdan emin olun. Debian/ubuntu kullanıyorsanız, terminalden yüklemek için komutlar:

Sudo apt-get redis-server yükleme Linux dağıtımınıza REDIS yükleme ve güvence altına alma konusundaki okyanus dijital öğreticisini takip etmenizi şiddetle tavsiye ediyorum. Linux’un başka bir varyantınız varsa, hemen hemen her ana Linux dağıtımına hizmet eden ayrı bir öğreticiye sahipler. 2. REDIS’i web sunucunuza yükledikten ve yapılandırdıktan sonra, PHPRADIS uzantısını sunucunuza yüklemeniz gerekir. PHP’nin REDIS anahtar değerinin depolanmasıyla iletişim kurması için bir yangın sağlar. Sudo apt-get yükleme php-redis phpradis uzantısını yükledikten sonra php sunucunuzu yeniden başlatın. Bunu aşağıdaki komutla yapabilirsiniz: sudo service php7.3 fpm yeniden başlatma Not: Web sunucum PHP 7.3 sürümünü çalıştırır. Web sunucunuzun PHP sürümüyle eşleşen komutları kullanmanız gerekir. 3. Redis sunucusunun sayfa önbelleğini depolamak için yeterli belleğe sahip olduğundan emin olmanız gerekir. Redis Page Cache, sayfa önbelleği için en az 16 MB tahsis etmenizi önerir. Bunu Redis.conf dosyanıza aşağıdaki satırları ekleyerek yapabilirsiniz: MaxMemory 256MB Redis sunucusuna 256 MB tahsis ettim. Eklenti, bellek kullanımını azaltmak için GZIP kullanarak önbelleği sıkıştırdığından, bu eklenti tüm önbellek sayfasını saklamak için yeterli olmalıdır. Ardından, Redis’in yenileri için yer sağlamak için eski önbelleğini kaldırmasını sağlamak için aşağıdaki bellek ilkesini ekleyin. MaxMemory-Policy Allkeys-LRU Yapılandırma dosyasındaki değişikliklerinizi kaydettikten sonra Redis sunucusunu başlatın. REDIS’i yeniden başlatmak için aşağıdaki komutlar:
Sudo systemctl redis.service 4. yeniden başlatma 4. Şimdi Redis sayfası önbellek eklentisini yüklemeniz ve etkinleştirmeniz gerekir. GitHub Açık Kaynak Deposundan veya doğrudan WordPress.org aracılığıyla manuel olarak yükleyebilirsiniz. Not: Eklentiyi doğrudan WordPress.org aracılığıyla yüklerseniz, slug eklentisi (veya yönetmenlerin adı) PJ-Page-Cache-Red’dir. Ancak doğrudan GitHub Repo üzerinden indirirseniz, sümüklü page önbellektir. Bir sonraki adımda doğru sümüğü kullanmanız gerektiğinden nereye yüklediğinizi unutmayın. 5. Ardından, WP-Content dizini içinde eklentide bulunan Advanced-cache.php dosyasına bağlanan sembolikler (sembolik bağlantılar veya kısayollar) oluşturmanız gerekir. Bunu yapmak için önce CD komutunu kullanarak terminal dizininizi WP-Content klasörüne değiştirmelisiniz. CD /var/www/your-domain.com/wp-content artık LN -S komutunu kullanarak WP-Concenterory dizinindeki semboller oluşturabilirsiniz. Sudo ln -s eklentileri/pj-page cache-kırmızı/gelişmiş-cache.php Advanced-cache.php 6. Son olarak, wp-config.php dosyasını düzenleyerek WordPress sitenizdeki sayfa önbelleğini etkinleştirmeniz gerekir. /* Hepsi bu, düzenlemeyi durduran satırın üzerine aşağıdaki kod kodunu ekleyin! Tebrikler bloglama. */ Tanım (‘wp_cache’, true);

Not: Yukarıdaki kod fragmanını eklediğiniz konum çok önemlidir. WordPress siteniz için Redis sayfası önbelleğini hazırlamayı bitirdiniz. Web sitesi testini yüklemeden önce, sayfa önbelleğinin amaçlandığı gibi çalışıp çalışmadığını kontrol edelim. Bunu, siteyi kılık değiştirmiş modda ziyaret ederek veya curl komutunu kullanarak test edebilirsiniz: curl -v https://example.com -o/dev/null sayfa önbelleği olması gerektiği gibi işlev görürse, x -göreceksiniz. PJ -Cache yanıt başlığı -Status isabet değerine sahip. <X-PJ-CACHE-STATUS: Görüntülenen değer ilk kez "Bayan" ise, komutu tekrar çalıştırmayı veya sayfayı yenilemeyi deneyin. Bunu yapmanız gerekir çünkü önbellek yalnızca sayfa en az bir kez yayınlandıktan sonra saklanır.

Önbelleğin durumunu doğrudan terminal tebriklerinde kontrol ederek, şimdi Redis sayfası önbelleğinin web sitenizde çalıştığını doğruladınız. Nasıl çalıştığını belirlemek için Redis Page önbellek eklentisini de yapılandırabilirsiniz. Bu örnek için varsayılan ayarları kullanmaya devam edeceğim. Önbellek Redis sayfası ile stres testi etkinleştirilir, sitenin etkinleştirilmiş REDIS sayfası önbellek ile nasıl hayatta kaldığını görmek için yapay bir siteyi test edelim. Loader.io’yu çalıştıracağım ve 100’e ayarlanmış maksimum istemci sayısıyla bir yük testi yapacağım.
REDIS PAGE CACHE etkinleştirilmiş 0-100 istemciler için Loader.io Test Sonuçları Sonuçların tutarlı olmasını sağlamak için beş kez testi tekrarlıyorum. Ortalama bir yanıt süresi 478 ms ve hata olmadan, sitenin etkinleştirilmiş sayfa önbelleği ile iyi çalıştığı sonucuna varabiliriz. İstemci sayısı aynı anda arttığında (yeşil çizgi), tepki süresi nispeten sabit kalır (mavi çizgi). Bu, sunucunun yükleme sayfalarının hızını etkilemeden birçok etkin kullanıcıyı işleyebileceği en iyi göstergelerden biridir. Testi tekrar yapalım, ancak bu sefer aynı anda en fazla 200 istemci ile. Loader.io REDIS sayfası önbelleğine sahip 0-200 istemciler için test sonuçları, siteyi etkinleştirdi. Yukarıdaki grafikte, 22 saniye işaretinde yanıt süresinde bir artış göreceksiniz. Bu noktadan sonra, sunucu yanıt süresi artan aktif istemci sayısıyla artar. Rackaid tarafından yapılan bir araştırmaya göre, iyi bir kullanıcı deneyimi sağlamak için sunucu yanıt sürenizi 500 ms’den az tutmanız gerekir. 200 aktif kullanıcı ile testin sonunda, sunucu yanıt süresi 1200 MDTK’dan fazla arttı. İdeal olmaktan uzak. Not: Önbellekleme, sunucu yanıt süresini azaltmanın birçok yolundan sadece biridir. Bu konu hakkında daha fazla bilgi için, TTFB’yi azaltma ile ilgili WP Roket makalesine bakın.
Sunucu yanıtı süresi, 78 müşteriye kadar hızlı ve düzdür ve 78 müşteriye aynı anda çok iyi bir performans kaybetmeden hizmet vermektedir.Her kullanıcının herhangi bir sayfada ortalama 2 dakika harcadığını varsayarsak, bu, sunucu sorunlarıyla karşılaşmadan her ay 1,5 milyondan fazla sayfa talebi sunmak anlamına gelir.Daha fazla sunucu limitine basalım.250’ye göre düzenlenmiş maksimum aktif istemci sayısıyla tekrar test etmeyi vurgulayacağım. Loader.io REDIS Page Cache ile 0-250 istemciler için test sonuçları Sonuçlar önceki testlerle tutarlı görünüyor, ancak bu sefer sunucu yanıtı% 5,1’si% 5.1 HTTP 400 Hata /500.Ayrıntılı sekmeyi görmek, ilk hatanın yanıtının ne zaman meydana geldiği hakkında daha fazla bilgi verecektir.
REDIS Page Önbellek etkinleştirilmiş HTTP 500X hatası ile müşteri testi 0-250 için detay sekmesi ilk olarak 51. dakikada gerçekleşti.Testte şu anda toplam aktif istemci sayısı 218’dir.

218 Aktif istemciler, bu test senaryosu için stres sınırlarıdır.Yukarıdaki testten Redis sayfası önbelleğinin site performansını önemli ölçüde artırdığı sonucuna varabiliriz.Şimdi Nginx Fastcgi önbellek etkinleştirilmiş test sitelerine geçelim.Nginx fastcgi önbellek nedir?Nginx, WordPress sitelerini barındırabilen popüler ve yüksek performanslı bir web sunucusudur.Bir web sunucusu olmanın yanı sıra, bu da ters proxy, e -posta proxy, yük dengesi ve HTTP önbelleği olarak da kullanılır.W3Techs’e göre, web sitesinin% 32.1’i NGINX Web sunucusuna (25 Mayıs 2020) yüklenmiştir.Çoğu WordPress, bugün web sitelerine güç sağlamak için Nginx kullanarak performansa odaklanan ev sahipleri.

Siteyi Nginx Fastcgi önbellek (kaynak: nginx) önbellek ile hızlandırın Nginx’teki esas olarak FastCgi önbellek modülü tarafından desteklenir. SpinupWP tarafından yapılan karşılaştırma testine göre, Nginx FastCgi önbellek en hızlı ve en verimli önbellek çözümüdür. NGINX FastCgi Önbelleği Nasıl Etkinleştirilir Nginx’i yükleyen web sunucusunda yalnızca Nginx FastCGI önbelleğini etkinleştirebilirsiniz. Nginx’i web sunucum olarak yüklediğim için, Redis izlerini silmek için yalnızca temel yapılandırmaya yeniden düzenleyeceğim. Nginx önbellekleme ile ilgili WP roket makalesini ziyaret ederek WordPress sitenizde Nginx FastCgi önbelleğini nasıl kullanacağınızı öğrenebilirsiniz. Ayrıca, Nginx Fastcgi önbelleğinin nasıl etkinleştirileceğine dair derinlemesine bir eğitim için WordPress’imizdeki dinamik içerik önbellek makalesini de görebilirsiniz. Siteyi stres test etmeden önce, fastcgi önbelleğinin yanıt üstbilgisini kontrol ederek sitedeki işlev gördüğünü doğrulayalım. Üstbilgi yanıtı “FastCgi-Cache: Hit”, FastCGI önbelleğinin etkinleştirildiğini doğruladı. Loader.io’daki stres testine devam edelim. . Nginx Fastcgi önbelleği ile stres testi önce etkinleştirilir, maksimum aktif istemci sayısını 100 olarak ayarlayarak siteyi test edeceğim.

Loader.io Test Sonuçları Nginx Fastcgi önbelleği olan 0-100 istemciler için beklendiği gibi etkinleştirilir, site sayfa önbelleğini etkinleştirdikten sonra çok iyi performans gösterir. Etkin istemci sayısı 100’e ulaşsa bile ortalama sunucu yanıt süresi 400 ms’nin altında kalır (ayarladığım maksimum miktar). Şimdi maksimum aktif istemci sayısını 200’e çıkaralım ve stres testlerini tekrarlayalım.

Loader.io NGINX FASTCGI önbelleğine sahip 0-200 istemciler için test sonuçları, maksimum aktif istemci sayısını artırdıktan sonra bile etkinleştirilir, sunucu yanıtının ortalama süresi 400 MDTK’nın altında kalır. Zaten net bir kazananımız var. Ancak sunucuyu ne kadar itebiliriz? Loader.io, maksimum aktif istemci sayısını 10.000’e kadar ayarlamanızı sağlar. Bu nedenle, sunucunun takip edip etmeyeceğini görmek için bu maksimum ayarla test ediyorum. Nginx fastcgi önbelleğine sahip 0-10000 istemcisi için yükleyici.io testinin sonuçları garip bir şekilde etkinleştirildi, sunucu devam ediyor. Bununla birlikte, test sonuçları% 19,7’lik bir hata oranı gösterir (bu durumda zaman biter) ve ortalama sunucu yanıt süresi 4464 ms’dir. Nginx FastCgi önbelleğini etkinleştirerek site stres sınırını bulmak için maksimum müşteri sayısını yarıya indirmeye devam ediyorum. Sonunda iki noktaya geldim.

Nginx FastCGI önbelleğine sahip 0-800 istemcisi için yükleyici.io test sonuçları, 800’e ayarlanan maksimum aktif istemci sayısı ile etkinleştirilir, ortalama sunucu yanıt süresi 596 ms’dir. Ancak, sunucunun zaman sınırı 760 aktif istemciye ulaştıktan sonra testin sonuna doğru başlar. Nginx Fastcgi önbelleği için basınç sınırı, Redis sayfası önbelleğinde gözlemlediğimiz şeyin 3,5 katıdır.

Sunucunun zaman sınırı 56 saniyelik işarette başlar, ortalama yanıt süresinden (<500 ms) ödün vermeden sunucu tarafından işlenebilecek aktif istemci sayısını bulmak için başka bir stres testi yapacağım. Bu test için, maksimum sayıda müşteri 500'e ayarladım.

Nginx FastCgi önbellekli 0-500 istemcisi için yükleyici.io test sonuçları, sunucu yanıt süresi 44 saniyelik işarette 500 ms’den fazla ulaşır ve yukarı doğru hareket etmeye devam eder. Bugün aktif müşteri sayısı 375’tir. Bu nedenle, sunucunun yanıt süresini etkilemeden aynı anda 375 istemciyi işleyebileceği sonucuna varabiliriz. Bu, Redis Page önbelleği tarafından desteklenen aktif istemci sayısının 4,8 kat katıdır. Her kullanıcının herhangi bir sayfada ortalama 2 dakika harcadığını varsayarsak, bu, sunucu sorunlarıyla karşılaşmadan her ay 8,1 milyon sayfa talep sunmak anlamına gelir. 10 $/ay sunucusunda işe alınan site için fena değil. Redis sayfası önbellek stres testinin sonucuna varmak, WordPress sitesi için tam sayfa önbelleğinin akıllı bir uygulamasıdır. Sayfa önbelleğini etkinleştirmemekle karşılaştırıldığında, bu, site performansının iyileştirilmesinde çok yararlıdır. Bununla birlikte, Nginx Fastcgi önbelleği, gerçekleştirilen tüm stres testlerinde Redis sayfası önbelleğini yendi. Aşağıda iki stres testinin bir karşılaştırma tablosu bulunmaktadır. Sonuçlar kesindir ve yalnız konuşur.

admin

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir