-2

重複の可能性:
高負荷サイトで PHP を使用するための戦術

私はここでは新人です。これは初めて。

私のサイトの 1 つ (これは php/mysql にあります) は良好なトラフィックを得ており、ホスティングも VPS にアップグレードしました。ピーク時には、1 時間あたり 7 ~ 8 人のユーザーと、ほぼ 50,000 のデータベース リクエストが発生します。しかし、まだピーク時にパフォーマンスの問題が発生しています。当サイトはデータベース取引を行っておりません。mysql サーバーからモバイル アプリの xml フィードを提供するだけです (一方通行のトラフィックで、ユーザーからのデータはありません)。今、私はホスティング会社に速度について話しましたが、彼らはいくつかのことについて話しました.

  1. 彼らは memcached のインストールについて話しました。インストールするだけで問題は解決しますか?これをどのように使用しますか?これをインストールするだけで問題が解決するかのように話していたからです。
  2. Mysql クエリ キャッシュ。私はこれを使用する方法を知っています。パフォーマンスが向上しますか。ほとんどのユーザーが 3 ~ 4 件の結果を要求しています (70% のトラフィック)。
  3. すべてのクエリは選択クエリのみであるため、結果の取得中に mysql テーブルがロックされないように最適化するにはどうすればよいですか? または、私があなたから得ることができる他の提案。

お時間をいただき、ありがとうございました。

4

2 に答える 2

0

彼らは memcached のインストールについて話しました。インストールするだけで問題は解決しますか?これをどのように使用しますか?これをインストールするだけで問題が解決するかのように話していたからです。

それは役に立ちますが、すべての問題を解決するわけではありません。しかし、使い方を知らなければ何の役にも立ちません。

Mysql クエリ キャッシュ。私はこれを使用する方法を知っています。パフォーマンスが向上しますか。ほとんどのユーザーが 3 ~ 4 件の結果を要求しています (70% のトラフィック)。

クエリが減ります。しかし、リアルタイムの結果を提供したい場合、それは役に立ちません。

すべてのクエリは選択クエリのみであるため、結果の取得中に mysql テーブルがロックされないように最適化するにはどうすればよいですか? または、私があなたから得ることができる他の提案。

  • MyISAM = テーブルレベル ロック;
  • InnoDB = 行レベル ロック。

EXPLAINを使用して、クエリで何を最適化できるかを確認します。

あなたが提供した詳細で、これが私が提供できるすべての助けです.

于 2012-08-23T18:28:39.573 に答える
0

1) Memcached は役に立ちますが、実際の問題を隠してしまいます。これはキャッシュと同じように機能します。大きなクエリや長いアルゴリズムなど、リソースを必要とするプロセスの結果を一時的に保存します。このキャッシュ システムを使用するには、アプリケーションを変更する必要があります。

2) クエリ キャッシュ。あなたの場合、MySQL Query キャッシュは、トラフィックの読み取りが多い場合に効果的なより良いソリューションかもしれません。しかし、3 番目の質問に関しては、ロックの問題もあり、クエリ キャッシュをオンにすると、ミューテックスの競合も発生します。クエリ キャッシュの無効化はコストのかかる手順です。

3/a) まず、ストレージ エンジンを行レベルのロックを備えた InnoDB に変更し、新しいバージョンの MySQL では MyISAM よりも多くの最適化を行っていない場合。(最新バージョンを使用してみてください)

3/b) テーブルのインデックスを確認し、EXPLAIN を使用してクエリを分析します。

+) 「1 時間あたり 7 ~ 8 人のユーザーとほぼ 50k のデータベース リクエスト」これは、7 ~ 8 人のユーザーに対する膨大な数のクエリのようです。データベース スキーマとアプリケーション コードを確認してください。通常、1 つのより複雑なクエリに組み合わせることができる foreach のクエリで、このようなことがわかりました。

于 2012-08-23T21:36:04.690 に答える