2011-08-16 19 views
2

私たちのデータベースサーバは当社のウェブサーバとは別になっています。データベースサーバーは複製されています(ここにはオーバーヘッドがあります)。しかし、レプリケーションをオフにしても、PHPスクリプトの多数のクエリのパフォーマンスは、同じマシン上のdbとapacheを持つステージングサーバーの4倍です。私は、ネットワークの待ち時間やネットワーク上の他の問題は、それらが同等になる方法はないと認識していますが、プロダクションサーバーは指数関数的に強力であり、運用ネットワークはすべてギガビットスイッチです。可能な限りMYSQLをチューニングしましたが、パフォーマンスマーカーはまだ4倍遅いです。私たちはApacheのプロキシを使ってnginxを実行し、MYSQLのdbsを複製しています。 UCarpも稼動しています。パフォーマンスを改善するためのヒントは何ですか?私は生産に2倍の遅れを感じています。ネットワーク上でMYSQLのパフォーマンスを向上させる方法

+0

これは、外部の人が診断して提案することは非常に難しいですが、それは数時間期待請負業者を雇う価値があります。 –

答えて

1

それはあなたの説明与えられた暗闇の中で刺すよりもはるかに多くを行うことは困難だが、ここでうまくいけば、原因を絞り込むれる、独立しようとするいくつかの出発点です:

  • は別のホスト
  • にステージングDBを移動します
  • 生産プールにステージングホストを追加して、他の人を削除
  • それはあなたのロードバランサ経由ではなく、遅延
  • 使用個々のMySQLサーバーを引き起こしてクエリをだ確実にするために、あなたのPHPスクリプトプロフィール
  • [GB]で教授
  • は、MySQLサーバープロファイルWebサーバプロファイルWebサーバー間の実行のnetperfとあなたのDBクラスタ
  • MySQLクライアントから生産プールとステージングサーバーへの単一のクエリを測定します

リモートホストによる予想される性能低下以外の問題がない場合は、再現可能なテストケースと完全なMySQL設定を提供してください(機密データを編集してください)。それはMySQLのあなたのより熟練した誰かを助けるでしょう;)

0

ウェブサイト上のすべてのウェブリクエストが(適切に設計されていれば)mysql接続を必要とするとは限りません。たいていの場合、httpリクエストごとに接続が必要な場合、アプリケーションは拡張されず、非常に迅速に問題を開始します。

  1. アプリでさらにキャッシュしますか?サーバーはmysqlをあまり頻繁に要求しません。例えば。 memcacheを使用してください。

  2. アプリケーションからmysqlサーバへの永続的な接続を試みてください。

  3. mysqlデータ圧縮を使用します。

  4. 縮小化データ(SELECT文で代わりに "*" の列名を使用して、あなたの選択を制限する)

シャーマニックチューニング:

  • は何もでネットワークを遅くしないことを、確認してくださいmysqlサーバ:大きなファイアウォールルールセット、ネットワークフィルタなど

  • 別の(クライアント不可能な)ネットワークインタフェースをappに追加します。サーバ とmysqlサーバ。

  • アプリ間のネットワーク接続を調整します。サーバーとMySQL。場合によっては、 はハードコーディングされたネットワークルートを作成することで数ミリ秒に勝つことができます。

は、上記のいずれかが役立つだろうと思いません - ネットワーク接続が遅い場合、上記の何が大幅にスピードアップしません。

関連する問題