web-dev-qa-db-ja.com

MySQLパフォーマンスの問題のトラブルシューティング

環境:

1台の物理マシン

  • 8GBのRAM
  • いくつかの古いCore2DuoCPU
  • 1台のHDD
  • Windows Vista64ビット

1つの仮想マシン

  • 16 GB RAM
  • 2つのvCPU
  • Windows 764ビット

同一のデータベースでMySQL5.5.28(64ビット)を実行している両方のマシン。私はVMWare環境を管理しており、別のユーザーがデータベース部分を管理しています。すべてのデータが移行されるように、物理マシンを仮想マシンに置き換える必要があります。ここでの問題は次のとおりです。VMのパフォーマンスはひどいです。DB管理者は両方のマシンで直接大きなクエリを実行し、物理的なクエリはVMより2〜3倍高速です。そこで試してみましたVMには、RAMとCPUの数が増え、ブロックサイズが16kbのRAWデバイスを手間をかけずに接続しました。物理は、常にVMよりも優れています。

私たちのVMWare環境は、次の3つのホストで構成されています。

  • ホスト– Dell PowerEdge R720、2x E5-2640、8x 8GB RAM、Broadcom BCM57711 10GB HBA
  • スイッチング– Dell Powerconnect 8024F
  • ストレージ– Dell Equallogic PS4100X iSCSI
  • VMWare 5.1、Clustred、HA、分散vSwitchなし

いくつかの構成の問題が見つかりました。パフォーマンスを向上させるためにいくつかのことを行いました。

  • VMがオフになっている内のファイアウォール
  • ウイルススキャンがオフになっている
  • IPV6はオフです

ホストでは、TCP遅延ackとLROに関してDellで読んだレイテンシの問題がありました。これらをオフにすることをお勧めします。そうすると、VM内のスループットが少し向上しました( IOMeterで簡単なテストを行いました)。MySQLデータベースは一種の重い(120GBファイル)です。WindowsExplorerを使用してVM内であるボリュームから別のボリュームにコピーすると、一定の130mb/sが得られます。 (VMドライブc:-Windows、ドライブe:-rawデバイス)。クエリを実行すると、Windowsリソースモニターでファイルが約500kb/sで読み取られていることがわかります。ここで問題は何でしょうか。

DBAはまた、my.ini内でさまざまなデータベース設定を試し、巨大なdbファイルを小さなファイルに分割しようとしましたが、まったく労力を要しませんでした(個人的には、MySQLの専門家ではないため、彼を信じる必要があります)。

Windows 7がDBサーバーとして実行するのに最適なOSではないことは知っていますが、これは数日間の簡単なテストになるはずです。後で2008R2を使用します。 iopingやIOMeterを使用してテストを試みます(これに関する推奨事項はありますか?)。前もって感謝します。

[〜#〜]編集[〜#〜]

SAN上で直接rawデバイスを監視する:

DBクエリの実行中: http://s1.directupload.net/file/d/3185/x5rpsmg5_png.htm

Windowsエクスプローラーでファイルコピーを実行している場合: http://s14.directupload.net/file/d/3185/ug6zlpki_png.htm

上記の実行中のVMのCPU負荷: http://s14.directupload.net/file/d/3185/2qgmbx9q_png.htm

1
duenni

問題はストレージバックエンドです。

グラフから、SANランダムIOPS値を高くすることができないことは明らかです(平均iopsと平均キューの深さの両方を参照)。

状況を改善するには、次のことを試してください。

  1. my.cnfファイルを編集し、行innodb_buffer_pool_size = 8589934592を追加(または変更)して、innodbバッファープールサイズを増やします。
  2. 可能であれば、SAN経由ではなく、直接接続されたディスク(R720サーバーにローカル)を使用してテストを実行します。
1
shodanshok

これは、問題の原因となっているVMWareストレージスタックのようです。ホストを独自のハードウェアに移動した場合でも、共有VMWareストレージでは、同じデータストアを使用するすべてのワークロードが同じストレージリソースを使用することに注意してください。 VMWareは、ストレージの生のパフォーマンスをVMに渡すのが上手になりましたが、生のデバイスほど良くはありません。

この理論を次のようにテストします。VMのクローン)へのrawデバイスマップを作成し、テストを再実行します。物理サーバーの結果に非常に近い場合は、問題があります。編集:Windows 7からrawデバイスを使用できない場合は、サーバーOSを使用して試す必要があります。rawデバイスに到達する前に問題が解決する場合は、別の回答があります:P

私のショップでは、まだVMWare 4でprodを実行しているため、すべてのデータベースにRDMを使用する必要があります。より良いバージョンのVMWareを使用している限り、それほど遠くまで行く必要はないかもしれませんが、このデータベースのさまざまなストレージポートに独自のLUNを備えたデータストア専用にすることを試してみてください。

0
Basil