web-dev-qa-db-ja.com

スケーリング WP eコマースサイト

これに関連する 質問

WPで大規模なeコマースサイトを最適化するためのツール、プラグインに関する推奨事項。現在1000アイテムを突破中、さらに5000アイテムが登場。最適化は、何千人ものユーザーにサービスを提供している標準的なブログとは異なるようです。 WPで開発されているストアの数は増え続けており、最適化のパッケージをまとめることは役立つように思われます。

MM/RC

5
RealityCramp

私はShoppプラグインを使ってWordpressを使って55k製品のeコマースサイトを開発しました。MySQLに対して行ったことを共有してパフォーマンスを向上させることができます。

"show status" sqlコマンドからの出力を見て、バッファ/キャッシュをどれだけ増やす必要があるかを判断してください - この出力をきれいにするツールがあります。役に立つかもしれません。 http://blog.mysqltuner.com/ も便利なリソースおよびユーティリティです。

クエリキャッシュが有効になっていること、およびメモリ不足のプーナ数が非常に少ないことを確認してください。キーの読み取り数が多すぎないことを確認してください(これは相対値です)。key_buffer_sizeを大きくするとそれに役立ちます。作成されている一時テーブルの数が少ないことを確認し、tmp_table_sizeを増やしてその数を減らします。

スロークエリーログをオンにしてスロークエリーをログに記録し、それらのクエリーをExplainステートメントを使用して手動で再実行し、必要に応じてインデックスを追加し、列タイプを変更するなどします。あるクエリでは、(本来あるべきよりも多くの行を比較するように)普通でないExplainステートメントを取得していました。MySQLで新しいバージョンにアップグレードすると、同じクエリがMySQLによってはるかに最適化されました。自体。

フルテキストインデックスを使用しているのであれば、InnoDBテーブルが選択肢になるとは思わない - 忙しい時間帯に製品を更新しないでください。あなたのeコマースパッケージがそれをサポートしていれば、ステージングサーバーに変更を加え、ステージからダンプしてプロダクションにロードすることで製品テーブルだけを移動することで、顧客の混乱(パフォーマンスなど)を最小限に抑えることができます - これ Wordpressのインストールの残りの部分のためにいくつかの追加作業なしで動作しません

あなたのサイトデザインとUXが「ブラウジング」モードと「サーチ」モードへのユーザーの誘導をサポートしている場合(例:サイトをクリックして検索ボックスに検索を入力する)、非常に簡単なデータベースを利用できます。 levelとWordpressのレベルキャッシング。

あなたのキャッシュを事前にロードする - あなたのサイトをwgetでスパイダーすることによって、クエリキャッシュやWordpressレベルのキャッシュのような簡単なキャッシュも事前にロードすることができます。ユーザーの検索動作(ログを使用)を使用してキャッシュをいっぱいにする必要があるときにそれらの要求を再取得することで、検索用のキャッシュを事前に読み込むこともできます。

11
bsr

私は自分のコメントに興味があり、読んでいるところがいくつかあります。

まず最初に、 W3 Total Cache を試してみます。また、APC PHP拡張機能をサーバーにインストールし、それを使用するようにW3 Total Cacheを設定します。 APCを使用してデータベースオブジェクト、PHPをキャッシュし、CSSやJSを縮小することもできます。それは十分に提供するかもしれません。特にMySQLキャッシュをすでに組み込んでいる場合は特にそうです。 W3 Total Cacheは、キャッシュバックエンドとしてMemcacheと連携することもできます。

データベースの場合、クエリをキャッシュすると非常に便利です。私は このリンク を見つけました、そして彼は彼が彼のMUブログのためにどうやって代わったかを説明します。引用するには:

Query CacheはMySQLの気の利いた小さな機能です。ここでは、最近変更されていないテーブルに対するクエリの結果が格納されます。

つまり、テーブル内の特定の行を取得する要求が発生し、そのテーブルは最近どのような方法でも変更されておらず、キャッシュがパージ/クリーニングを必要としていない場合、クエリ/データはこれで満たされます。キャッシュ。ここでの主な利点はもちろん要求を満たすことです - データベースはディスク(通常はシステムの最も遅い部分)に移動する必要はなく、すぐに満たすことができます。

それで、これはかなりクールです、そして製品自体があまり変化しないので、大いに役立ちます。この記事で言及しているもう1つのことは、Ramにデータベースを保持するための非常に多くのメモリがあることを確認することです。これにより、クエリの速度が劇的に向上します。

彼はまたテーブルタイプについて話しており、InnoDBよりもMyISAMをほとんど読み取り専用のテーブルに使用していますが、これは少々MU指向ですが、役に立つかもしれません。

インデックスの設定に関して。あなたがそれらをたくさん持っているなら、それらは挿入を遅くし、より多くのディスクスペースを占有することができます。しかし、大量の製品が定期的に追加されることを想像していないので、これは許容できると思います。そしてディスクスペースが安くて….

1
Ryan Gibbons