3

実際にインストールするという意味ではありません。現在、開発に LAMP を使用していますが、トラフィックの多いサイトに memcached の使用を開始したいと考えています。どのタイプの db 呼び出しをキャッシュする必要がありますか? (すべて?) そして、開発サーバーで負荷テストを行う良い方法は何ですか? 本番サイトで最初に確認すべきベンチマークはありますか? サイトは主に選択されており、更新/挿入はほとんどありません。RAM の使用量とトラフィックに関して従うべき一般的なガイドラインはありますか、それともほとんどが試行錯誤によるものですか?

ありがとう。

4

4 に答える 4

1

常に最初に測定してから最適化します。主なボトルネックを書き留めて、適切なパフォーマンス テストを行ってください。

現在、独自の負荷をエミュレートできるベンチマーク プログラムはあまりありません。すべてのサイトが独自であるため、推奨できるものではないと思います。

しかし、高トラフィックをエミュレートしようとするツールがいくつかあります。

于 2009-04-22T01:46:50.007 に答える
1

まず、どれだけの RAM を使用する必要があるか、データが必要な頻度、およびデータが更新される頻度によって異なります。

どのタイプの db 呼び出しをキャッシュする必要がありますか? (全て?)

データを選択しているのとほぼ同じ速度でデータを更新している場合、おそらくキャッシュする価値はありません。

Eric が言ったように、サイトで使用するドロップダウンやその他の静的コンテンツは、memcache を有効に活用できます。

更新したら、キャッシュされたアイテムを削除/更新することを忘れないでください。

また、開発サーバーで負荷テストを行う良い方法は何ですか?

どのような種類の負荷テストを念頭に置いているかわかりません。

本番サイトで最初に確認すべきベンチマークはありますか? このサイトは主に、更新や挿入がほとんどない選択を行っています。

作成しているクエリのタイプを確認し、おそらくそれらと呼び出された回数をログに記録します。最も頻繁にキャッシュされる可能性があります。

また、最初に実行できる SQL の最適化が他にないことを確認してください。

RAM の使用量とトラフィックに関して従うべき一般的なガイドラインはありますか、それともほとんどが試行錯誤によるものですか?

RAMとトラフィックの関係はあまりないと思います。トラフィックのピーク時にボックスが機能するために必要な RAM の種類を把握し、それに応じて memcache の RAM 制限を設定します。

于 2009-04-22T01:47:03.967 に答える
1

最初に二次機能をサポートするクエリから始めます。それが最初にキャッシュされることにどのように反応するかを観察し、少しいじってください。サイトがそれにどのように反応するかを感じたら、他のクエリをキャッシュしようとします。memcached を使用したことはありませんが、codeigniter でクエリ キャッシュを使用しています。

サイトの特定のドロップダウン ボックスとフォーム要素にデータを入力するために使用するキャッシュ クエリから始めています。それらが変更されることはめったになく、テーブルにレコードを追加するデータベースに新しいファイルをロードするなどの管理アクションなしでは変更されません。そのようなクエリがある場合は、最初にそれらを試すことをお勧めします。

于 2009-04-22T00:44:45.227 に答える
1

データベースへの sが多くSELECT、書き込みが少ない場合、MySQL のクエリ キャッシュはデータをキャッシュするのに非常にうまく機能するはずです。

クエリ キャッシュがどの程度効果的に機能しているかを確認するには、次のことを試してください。

> SHOW GLOBAL STATUS LIKE 'Qcache_hits';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| Qcache_hits   | 735740 |
+---------------+--------+
1 row in set (0.00 sec)


> SHOW GLOBAL STATUS LIKE 'Com_select';
+---------------+---------+
| Variable_name | Value   |
+---------------+---------+
| Com_select    | 5644038 |
+---------------+---------+
1 row in set (0.00 sec)

ヒット率を計算するにはQcache_hits / (Qcache_hits + Com_select)

この場合は735740 / (735740 + 5644038) = 0.1153

これは 11% のヒット率であり、かなり貧弱です。

マシンで非常に高い % が表示される場合は、memcached を使用するケースが少ない可能性があります。

多くの場合、MySQL のクエリ キャッシュはうまく機能します (これにはあなたのキャッシュも含まれると思います)。テーブルが更新されるたびに (キャッシュされたクエリが変更されていない行に関連している場合でも) キャッシュ エントリが無効になり、これが大きな欠点の 1 つです。ユーザーとユーザーのアプリケーションが MySQL クエリ キャッシュよりもキャッシュの有効期限について賢くできる場合、memcached を使用して行レベルに近いアイテムをキャッシュできる場合があります。

クエリのキャッシュヒット率の結果を教えてください。現時点でクエリキャッシュが無効になっていることに気付くかもしれません(!)

次のクエリを実行して、有効になっているかどうかを確認できます。

> SHOW GLOBAL VARIABLES LIKE '%cache';

そこをチェックしてhave_query_cache = YESくださいquery_cache_size > 0

于 2009-05-01T16:00:53.827 に答える