Magento Enterprise Tam Sayfa Önbelleğini Ön Isıtma


19

Magento Enterprise'daki tam sayfa önbelleğinin performans avantajları oldukça iyi bilinmektedir. Çok iyi bilinmeyen şey, bunun tam olarak yararlanması için, özellikle sadece birkaç sayfanızın olmadığı büyük ürün setlerinde, yeterince hızlı prime.

Magento, siteyi taramak ve sabahın erken saatlerinde FPC'yi ısıtmak için yerleşik bir cronjob içerir.

Sabah erken işlerin çok uzun sürdüğü, diğer işlerin çalışmasını engellediği ve diğerlerinin ne kullandığını veya bunu yapmak için kullanılmasını önerdiği sorunları gördüm ve duydum. Birkaç fikrim var:

  • Oluşturulan site haritası dosyasındaki her sayfayı taramak için bir kabuk komut dosyası oluşturun.
  • Magento'yu önyüklemek ve tarayıcı işlemini doğrudan yürütmek için ayrı bir crontab girişi ve kısa bir PHP betiği kullanın.

Bu konuda herhangi bir düşünce ve / veya deneyim açığız!


1
Aslında Kurumsal tarayıcıyı ayrı bir dosyadan çağırabilir ve sunucularınızın crontab'ını kullanarak tetiklemezsiniz, böylece engellemezsiniz.
Toon Van Dooren

Yanıtlar:


16

Sen kullanabilirsiniz kuşatma ile birlikte sitemap.xmlolduğu gibi, dosyanın MageSpeedTest yapar.

#categories
curl http://yourmagentostore.com/sitemap.xml | sed 's/\<url\>/\<url\>\n/g' | grep 0.5 | sed 's/.*loc>\(.*\)<\/loc.*/\1/g' > urls.txt
#products
curl http://yourmagentostore.com/sitemap.xml | sed 's/\<url\>/\<url\>\n/g' | grep 1.0 | sed 's/.*loc>\(.*\)<\/loc.*/\1/g' >> urls.txt

O zaman koş

siege -i -c 1 -t 7200s -f urls.txt

İçerik buradan alınmıştır .


Ayrıca kullanarak istekleri arasında bir gecikme ekleyebilirsiniz–delay
Ben Lessani - Sonassi

Not: Bu sed komutları Darwin üzerinde değil, CentOS üzerinde çalışır.
davidalger

1
Bu, her url'nin "ısınacağını" garanti etmez. siege, dosyadan vurulacak URL'leri rastgele seçer, ancak her URL'yi ziyaret etmesi gerekmez.
Joe Constant

22

Biz sadece - hiç. Hiç. Bunu tekrar tekrar söyleyeceğiz ama

Önbellek! = Performans

Siteniz ihtiyacı (gerçeği veya Vernik) FPC katkısı olmadan hızlı olmak. Her zaman içeriğin hazırlanmadığı bir zaman olacaktır (yukarıdaki senaryonuz).

Yüksüz bir mağazada, FPC ile sayfa yükleme süreleri FPC olmayanlardan çok daha etkileyici olmamalıdır; Magento, < 400msstandart önbelleklerde (kategori / ürün / arama sayfalarında) sayfa yükleme sürelerini oldukça mutlu bir şekilde yapabilmektedir . FPC bunu aşağıya < 80msçekecektir - ancak uyarılarla birlikte gelir.

  1. Stok / fiyat bilgileri, geçersiz kılma veya TTL süresinin dolmasına kadar güncel değil
  2. Yeni öğeler / daha alakalı arama, geçersiz kılma veya TTL süresinin dolmasına kadar güncel değil

    vb.

FPC'ye (veya Verniklere) güvenmek neden kötü bir fikir

Önbelleklerin manuel olarak hazırlandığından emin olmak istiyorsanız, bunun birkaç nedeni olabilir

  1. Önbellekleri kullanıma hazır tutmak için yeterli doğal ayakınız yok (bkz. 'FPC'nin yararlı olduğu yerler')
  2. Siteniz onlarsız çok yavaş

Her şeyi önbellekleyemezsin

Sadece 5 kategori, iç içe yerleştirilmiş 2 seviye derinliği, 5 filtrelenebilir özellik, her biri 5 özellik seçeneği ve 1000 ürün içeren bir mağaza alırsanız; bu birçok olası kombinasyon.

25 seçenek, arka arkaya 5 kereye kadar seçim - İstatistikçi değilim , ama bunun farkındayım ... (özellik seçeneklerinin sayısının tamamen azalmadığı varsayılarak)

25 possible URLs on the first selection
20 possible URLs on the second selection
15 possible URLs on the third selection
10 possible URLs on the fourth selection
5  possible URLs on the fifth selection

5^5 = 3,125 possible combinations (for top level categories)
5^4 = 625 possible combinations (for 2nd level categories)

Tamam, yukarıdaki tahmin, tahmin edeceğim gibi, 3 tıklamayla - müşterinin ürünlerini bulması için mevcut ürünlerin sayısı yeterince azalırdı. Öyleyse bile ...

25 possible URLs on the first selection
10 possible URLs on the second selection
3 possible URLs on the third selection

5^3 = 125 possible URL combinations 

Ardından, bunu 5 kategoriye göre, bu 625 URL'dir. Bu aşamada, küçük bir katalogdan bahsediyoruz ve tüm ürün URL'lerini tamamen görmezden geliyoruz.

Ayrıca is_anchor, kategorileri açıkken iç içe geçmiş olsaydınız , katlanarak artacağı konusunda faktör oluşturmayız .

Böylece, bu sayfa hacmini taramak için - ya sayfa yükleme sürelerinizin başlangıçta iyi ve düşük olmasını ummanız gerekir, böylece hızlı ve hafif bir işlemdir (böylece taramanın amacını yenersiniz) - ya da TTL'nin süresi dolmadan önce tamamlanması için yeterli zaman.

Sayfalarınız 0.4s sayfa yükleme süresine sahipse ve 8 çekirdekli bir CPU'nuz varsa - o zaman ...

625 * 0.4 = 250 / 8 = 31 seconds

0,5 dakika, kötü değil - ancak 2s sayfa yükleme süreniz olduğunu düşünelim

625 * 2 = 1250 / 8 = 156 seconds

Ancak mümkün olan maksimum senaryoyu aldıysanız

3,750 * 2 = 7,500 / 8 = 937 seconds ~ 15 minutes

Bu, üretim sunucunuz, 15 dakika boyunca% 100 CPU yükü altında. Tarama hızını istediğiniz TTL ile orantılı olarak azaltabilirsiniz.

İçeriğin 3600s TTL'ye sahip olmasını istiyorsanız, tarama 4 kat daha yavaş olabilir - yani. sadece% 25 CPU taramaya adanmış. Kategori içeriğini hazır bulundurmak için çok fazla kaynak var - bu aşamada ürünler, arama terimleri veya ek mağaza görünümlerinde bile faktör oluşturmadık

Aslında, yalnızca catalog_url_rewritestablodaki kombinasyonların boyutuna bakmak (katmanlı gezinme parametrelerinde bile faktörü hesaba katmaz), kaç tane URL'yi taramanız gerektiğine dair bir fikir verecektir.

Her mağaza kesinlikle farklı olacak, ama eve vurmaya çalıştığım şey, siteyi FPC'yi prime etmek için taramanın pratik olmaması. Sadece mağazanızın hızlı başlamasından emin olun .

FPC'nin yararlı olduğu yerler

FPC'nin faydaları devreye girdiğinde, çok yüksek bir trafik seviyesine sahip olduğunuz ve önbelleklerin doğal olarak ve sürekli olarak sadece ayak basması ile astarlandığı ağır yüklü bir mağazada.

Daha sonra FPC, yaygın olarak talep edilen içerik üzerindeki altyapı ek yüklerini azaltarak devreye girerek Magento arka ucuna yapılan tekrarlanan çağrıları azaltır.

Bu nedenle, FPC'nin çok yüksek trafik düzeylerine sahip olduğunuzda (sayfa yükleme süresini azaltmak için değil), ancak kaynak kullanımını azaltmak için mükemmel olduğunu gördük.

Kimin umrunda, hala taramak istiyorum

O zaman iki seçeneğiniz var

  1. Şablondan tarama (ör. Site haritası)
  2. Bağlantıları sayfa sayfa ayıklayın ve her birini tarayın

Ve bunların her ikisini de yapmak için birçok yardımcı program var, bunlar biliyorum

  1. mage-PERFTEST
  2. HTTrack
  3. nutch
  4. Sphider
  5. Crawler4j

Mage-Perftest Kullanımı

Mage-Perftest ile mağazanızı kolayca tarayabilirsiniz, önce indirin

wget http://sys.sonassi.com/mage-perftest          (64bit) OR
wget http://sys.sonassi.com/mage-perftest-i386     (32bit)
chmod +x http://sys.sonassi.com/mage-perftest*

Ardından, Magento site haritasını kullanarak tarama işlemini tanımlayın (URL'lerin <loc></loc>etiketlere sarılması şartıyla, URL'lerin bir site haritasını oluşturarak bunu özelleştirebilirsiniz ). Aşağıdaki komut, site haritası dosyasındaki tüm URL'leri okuyacak, ardından URL'leri 1440 dakika (1 gün) içinde tarayacak (yalnızca PHP). Sunucu% 20 CPU'yu veya yük ortalaması 2'yi aşarsa tarama geçici olarak duraklar.

./mage-perftest -u www.example.com -s www.example.com/sitemap.xml -r auto -b -d 1440 -z -a 20 -l 2  

1 gün içinde taranan 1000 URL'niz varsa, bu yaklaşık olarak. 86 saniyede 1 istek ~ 0.011 RPS hedefi


Açtığınız satır çok doğru… sayfa önbelleklemesi performansa ulaşmanın yolu değil. Bunu biliyorum. Müşterilere aynı şeyi kaç kez söylediğimi bilmiyorsunuz. Dürüst olacağım, daha önce FPC'yi hazırlayan bir tarayıcımızın olduğu bir siteyi kurmadım ve yalnızca bir istemcinin yöneticide etkinleştirdiği bir kez kullanıldığını gördüm… dosya tabanlı önbellek etiketleri nedeniyle işleri yavaşlatıyor. Sormamın temel nedeni, Nexcess'in teknik incelemesinde yapılan bazı araştırmalara dayanarak bununla ilgili fikirleri araştırmam.
İnanılmaz

1
Nexcess'e saygı duyuyorum - ancak beyaz belgeleri , ortamın zaten performans gösterdiğinden ve kodun temiz, hızlı ve verimli olduğundan emin olmak yerine, performans elde etmek için çok fazla önbelleğe odaklanıyor . Müşterilerimize Vernik sağlıyoruz - ancak gerekinceye kadar kullanımını savunmayın. Ancak o zaman altyapı maliyetlerini azaltmanın bir yolu olarak - yani. dönüştürülmeyen / çıkış trafiğinin ~% 94'ü CPU döngülerini tüketiyorsa. Önbelleğe alma güzel yapay karşılaştırma istatistikleri sağlar - ancak TTL'ler çok uzunsa (eski içerik) gerçekte hiçbir şey ifade etmez - veya kullanıma hazır tutulması için yeterli trafik yoksa.
Ben Lessani - Sonassi

1
İnanılmaz derecede yüksek trafikli siteler için - birkaçımız var ve yapay taramayla önbelleği sıcak tutmaya çalışmak anlamsız - doğal trafik bunu iyi yapıyor. Herhangi bir şey varsa, tarama işlemi yalnızca müşteriler tarafından kullanılacak kaynakları kaldırır.
Ben Lessani - Sonassi

Performans için önbellek kullanmaya odaklanan beyaz kağıtlarında farklı olmaya yalvarıyorum. Bir 2 + 1 kümesinin ne kadar verim alabileceğini gösteriyorlardı. İçindeki sayfa yükleme sürelerine bile dokunmadılar, sadece işlem hacmi. Sahip oldukları donanım, alabileceğiniz kadar optimize edilmiştir… ve evet, TTL'lerin önbelleğe alınmış içerik üzerindeki etkilerini fark ediyorum. Sadece tekrarlamak için, burada performans elde etmek istemiyorum, zaten var. Bunun keşfedeceği şey, sabahın erken saatlerinde önbellek kızarması nedeniyle, yani normal trafik artmadan önce, verimdeki gecikmeleri / düşüşleri atlamanın yollarıdır.
davidalger

1
O zaman kafam karıştı. Mağazanız zaten hızlıysa - ancak önbelleği temizlediğinizde devrilirse. Ya a) Sabah önbelleği temizlemeyin, önceki gece yapın ve arama tarama botlarının (google / bing vb.) Sizin için hazırlamayı yapmasına izin verin veya b) doğru altyapıyı elde edin . Mağazanız gecikme / yavaşlamayı önlemek için FPC /
Vernik'e bağlıysa -

0

Bu günlerde bir blog yazısı için tam rantımı kaydedeceğim, ancak bu arada küçük önbellek ısıtıcımda bir zirve var wfpc.

Test performansı

Magento sitenizin performansını test edebilirsiniz

./wfpc -t http://mymagentosite.com/sitemap.xml

Finished testing your Magento site performance
Total download time (in seconds)   : 5.0269110202789
Total download time (formatted)    : 0:0:5.026
Average page time (in milliseconds): 502.69110202789

FPC Isınma

Ve sitemap.xml dosyasındaki her URL'yi vuracak olan FPC'yi ısıtabilirsiniz.

./wfpc -w http://mymagentosite.com/sitemap.xml

İsterseniz, isteklerin arasına bir gecikme de ekleyebilirsiniz, burada istekler arasında 1 saniye gecikme vardır.

./wfpc -w -d=1 http://mymagentosite.com/sitemap.xml

Test modu yalnızca 10 URL'ye rastgele vurur, bu nedenle FPC'nizi ısıttıktan sonra, FPC'nin ne kadar fark yarattığını öğrenmek için test modunu çalıştırabilirsiniz!

Düşünceler

Şahsen, daha sıcak bir şey olduğunu düşünüyorum ... Yaklaşık 40 sayfalık küçük bir sitede, FPC tarafından indirme süresi kabaca yarı yarıya azalır. Arka uç olarak APCu ile Lesti_FPC kullanan yaklaşık 40.000 ürün içeren büyük bir sitede, 8GB üretim sunucusunda hiçbir şey olmayan önbellek için 200MB'ın biraz üzerinde kullanıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.