web-dev-qa-db-ja.com

大規模なユーザーベースのためのパフォーマンスのヒント

私はたくさんのユーザー(100.000+)を含むサイトを準備しています。出力は、現在のユーザーといくつかのカスタム投稿タイプおよび分類法との関係に依存するため、静的キャッシュはあまり役に立ちません。

ユーザー用に別のテーブルを使用し、Cookieのないドメインから静的ファイルを提供する以外に、パフォーマンスのために他に何ができますか?

例:InnoDBとMyISAMのどちらを使うべきですか?インデックスへのヒント

更新

明らかに、私は十分に明確ではありませんでした。ごめんなさい。

すべてのユーザーがログインしています。常に。スタートページ以外に誰も見ることができません。このサイトでは、オンラインコース用の有料教材を提供しています。

私は大規模なユーザーベースにのみ関連するヒントを探しています。圧縮、スクリプトの遅延読み込み、スプライトなどの基本的な一般的なパフォーマンスの最適化は便利ですが、それだけではありません。

4
fuxia

静的ファイルキャッシュシステムではない "W3 Total Cache" を使うことができます。ただし、ページの読み込み時間を短縮するために、オペコードキャッシュ、memcached、およびオブジェクトキャッシュなどを使用します。 APC、または他のopcacheは、肥大化したApacheの代わりに軽量のhttpdを使用するのと同様に、あなたのサーバーに良い追加であるでしょう。

GZIPファイルを受け取らないほとんどの人は実際にGZIPファイルを受け取ることができるので、ユーザーにGZIPを強制することも良い考えと考えられています。リクエストヘッダはファイアウォールなどで管理されます。

しかし、ページロードの80%は一般的にフロントエンドなので、どこかに取り組む必要があります。 「W3 Total Cache」はCSSとJavaScriptの連結とファイルの縮小を行います。 JavaScriptファイルとCSSファイルが必要なページにのみ表示されるように適切に設定されている場合は、これが最善の選択肢です。しかし、ほとんどのサイトではそうではないので、その追加の必須設定は面倒なことに他なりません。また、ファイルを縮小すると、通常は壊れてしまうので、ファイルの連結だけを行います。

静的ファイルをCookieのないドメインで使用すると数ミリ秒節約できますが、ページロードを大幅に節約するには、CDNを使用するとアイテムあたり約100ミリ秒節約できます。また、複数のドメインを使用してファイルを処理すると、ドメインあたりの同時ファイル要求数に制限がある古いブラウザのページロードが増加します。

品質を落とさずに画像のサイズを節約するためにhttp://smush.itを使うことも検討したいかもしれません。 smushitを通じてローカルファイルを実行するための( https://github.com/icambridge/filesmush スクリプト。 https:/ smushitを介してS3でイメージを実行するための/github.com/tylerhall/Autosmush

あなたのコメントがあなたの投稿を大幅に上回っている場合は、InnoDBを使用する必要があります。そうでなければMyISAMは実際にはより速いかもしれません。

4
Backie

たぶんあなたはデフォルトのinnodb標準でmySQL 5.5に変更することができます。また、ロードバランサーを使用し、ユーザーテーブルを他のデータベース、追加サーバーに分離することも変更されています。

1
bueltge

@Backieが書いたことに同意します。

wp-supercacheは、APCを使用したオブジェクトキャッシングの実験的サポート、およびCDNサポートも備えています。私は、オブジェクトのキャッシュが、(ひどい?)書かれたプラグインから奇妙な動作を引き起こす可能性があることを発見しました。

MyISAMは、テーブル全体ではなくページのみをロックするため、多くの書き込み(主にコメント)がない限り、通常は高速になります。

MySQLスロークエリロギングをオンにし、actualボトルネックがどこにあるかを確認し、EXPLAINを使用してインデックスを追加する必要があるかどうかを確認します。 、など。 このページ は、EXPLAINを使用したことがない場合はかなり良いイントロです。

mysqltuner script は、MySQLの設定を調整する必要がある場合の解決にも役立ちます。

0
anu