Magento Enterpriseのフルページキャッシュを事前に温めます
-
16-10-2019 - |
質問
Magento Enterpriseにおける全ページキャッシュのパフォーマンスの利点は、かなりよく知られています。それほどよく知られていないかもしれないのは、これを実現するためには、特にオーガニックトラフィックを使用しているページがわずかにない大きな製品セットでは、完全に人口がかかり、熱くなければならないということです。迅速にプライム。
Magentoには、サイトをcraい、早朝にFPCを暖めるための組み込みのCronjobが含まれています。
早朝の仕事が走るのに時間がかかりすぎて、他の仕事がランニングをブロックすることによって引き起こされた問題を見て、聞いたことがあります。私が持っているいくつかのアイデアは次のとおりです。
- シェルスクリプトをまとめて、生成されたサイトマップファイルのすべてのページをクロールします。
- 別のCrontabエントリと短いPHPスクリプトを使用して、Magentoをブートストラップし、Crawlerプロセスを直接実行します。
これに関する考えや経験は大歓迎です!
解決
使用できます 包囲 と組み合わせて sitemap.xml
ファイル、次のように magespeedtest します。
#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
その後、実行します
siege -i -c 1 -t 7200s -f urls.txt
から調達されたコンテンツ ここ.
他のヒント
そうではありません - まったく。これまで。これは何度も何度も言いますが
キャッシュ!=パフォーマンス
あなたのサイト ニーズ FPC(またはその事実のワニス)を追加せずに速くなること。コンテンツがプライミングされていない時代が常にあります(上記のシナリオ)。
アンロードされたストアでは、FPCのページロード時間は、非FPCよりもそれほど印象的ではありません。 Magentoはとても幸せです < 400ms
標準のキャッシュのページの読み込み時間(カテゴリ/製品/検索ページ)。 FPCはそれを倒します < 80ms
- しかし、警告が付いています。
- 在庫/価格情報は、無効化またはTTLの有効期限まで古くなっています
新しいアイテム/より関連性の高い検索は、無効化またはTTLの有効期限まで古くなっています
等
FPC(またはワニス)への依存が悪い考えである理由
キャッシュが手動でプライミングされることを継続的に確保したい場合は、おそらくいくつかの理由があります
- キャッシュをプライミングするのに十分な自然の足場がありません (「FPCが便利な場所」を参照)
- あなたのサイトがそれらなしで遅すぎます
すべてをキャッシュすることはできません
わずか5つのカテゴリ、ネストされた2レベルの深さ、5つのろ過可能な属性、5つの属性オプション、それぞれ1000の製品を持つストアを受講する場合。あれは 多くの 可能な組み合わせの。
25回の選択肢を選択し、1つまで連続して最大5回選択します - 私は統計学者ではありません, 、しかし、私はそれが...(属性オプションの数が完全に減少しないと仮定して)
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)
わかりました、上記は、私が想像するように、3クリック以内に想像する可能性の高いシナリオではありません。利用可能な製品の数は、顧客が製品を見つけるのに十分に減少していました。だから、たとえそうだったとしても...
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
その後、5つのカテゴリ、つまり625 URLです。この段階では、小さなカタログについて話しており、すべての製品URLを完全に無視しています。
また、あなたがネストされたカテゴリを持っていたなら、私たちは考慮していません is_anchor
さらに、それは指数関数的に増加します。
そのため、そのボリュームをクロールするために - ページの読み込み時間がそもそも素晴らしく、低いことを願っています。 TTLの有効期限が切れる前に完了するのに十分な時間です。
ページにページの読み込み時間が0.4秒で、8コアCPUがあった場合 - その後...
625 * 0.4 = 250 / 8 = 31 seconds
0.5分、悪くない - しかし、2ページの読み込み時間があったと想像してみましょう
625 * 2 = 1250 / 8 = 156 seconds
しかし、可能な限り最大のシナリオを取得した場合
3,750 * 2 = 7,500 / 8 = 937 seconds ~ 15 minutes
これが、15分間の100%CPU負荷未満の生産サーバーです。必要なTTLに比例してクロール速度を減らすことができます。
したがって、コンテンツに3600S TTLを持たせる場合、クロールは4倍遅くなる可能性があります。クロール専用のCPUは25%のみです。これは、カテゴリのコンテンツをプライミングしておくためだけに多くのリソースです - この段階では、製品、検索用語、または追加のストアビューを考慮していません
実際、の膨大なサイズの組み合わせを見るだけ catalog_url_rewrites
テーブル(階層型ナビゲーションからパラメーターを考慮していない)は、クロールする必要があるURLの数についてのアイデアを提供します。
すべての店舗は確かに異なりますが、私が家に帰ろうとしているのは、FPCをプライムするためにサイトをrawっていることは実用的ではないということです。 最初から店が速いことを確認してください.
FPCが便利です
FPCの利点が発生する場所は、非常にロードされた店舗にあります - 本当に高いレベルのトラフィックがあり、キャッシュは自然かつ継続的にフットフォールだけで継続的にプライミングされています。
その後、FPCは、一般的に要求されたコンテンツでインフラストラクチャのオーバーヘッドを削減することにより機能します - Magentoバックエンドへの繰り返しの呼び出しを削減します。
そのため、FPCは、ページの読み込み時間を短縮するのではなく、リソースの使用量を削減するために、非常に高い交通レベルを持っているときに展開するのに最適であることがわかりました。
誰が気にしているのか、私はまだcraいたいです
さて、2つのオプションがあります
- テンプレートからクロールする(例:サイトマップ)
- リンクをページごとに抽出し、それぞれcrawlします
そして、これらの両方を行うための多くのユーティリティがあります、これらは私が知っているいくつかです
- mage-perftest
- httrack
- ナッチ
- スフィダー
- crawler4j
mage-perftestを使用します
Mage-Perftestで店をかなり簡単にcraう、最初にダウンロードすることができます
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*
次に、Magento SiteMapを使用してクロールプロセスを定義します(URLがラップされている場合、任意のURLのサイトマップを作成してこれをカスタマイズできます <loc></loc>
タグ)。次のコマンドは、SiteMapファイルからすべてのURLを読み取り、1440分(1日)の間にURLをクロール(PHPのみ)読み取ります。サーバーが20%CPUまたは2の負荷を超えると、クロールが一時的に一時停止します。
./mage-perftest -u www.example.com -s www.example.com/sitemap.xml -r auto -b -d 1440 -z -a 20 -l 2
1日以上rawった1000のURLがある場合、それは約になります。 86秒ごとに1リクエスト〜0.011 rpsのターゲット〜
最近のブログ投稿のために完全な暴言を保存しますが、その間に私の小さなキャッシュウォーマーでピークがあります wfpc
.
テストパフォーマンス
Magentoサイトのパフォーマンスをテストできます
./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温暖化
また、FPCを温めることができます。これにより、SiteMap.xmlのすべてのURLがヒットします。
./wfpc -w http://mymagentosite.com/sitemap.xml
また、必要に応じてリクエスト間に遅延を置くこともできます。これは、リクエスト間の1秒の遅延です。
./wfpc -w -d=1 http://mymagentosite.com/sitemap.xml
テストモードは10個のURLにランダムにヒットするため、FPCを温めると、テストモードを実行してFPCがどれだけの違いを生むかを確認できます。
考え
個人的には、暖かいことは理にかなっていると思います...約40ページの小さなサイトでは、ダウンロード時間がFPCによってほぼ半分に削減されます。 APCUをバックエンドとしてLesti_FPCを使用している40,000近くの製品を備えた大規模サイトでは、キャッシュに200MBを少し超えて使用しています。