環境:
1台の物理マシン
1つの仮想マシン
同一のデータベースでMySQL5.5.28(64ビット)を実行している両方のマシン。私はVMWare環境を管理しており、別のユーザーがデータベース部分を管理しています。すべてのデータが移行されるように、物理マシンを仮想マシンに置き換える必要があります。ここでの問題は次のとおりです。VMのパフォーマンスはひどいです。DB管理者は両方のマシンで直接大きなクエリを実行し、物理的なクエリはVMより2〜3倍高速です。そこで試してみましたVMには、RAMとCPUの数が増え、ブロックサイズが16kbのRAWデバイスを手間をかけずに接続しました。物理は、常にVMよりも優れています。
私たちのVMWare環境は、次の3つのホストで構成されています。
いくつかの構成の問題が見つかりました。パフォーマンスを向上させるためにいくつかのことを行いました。
ホストでは、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
問題はストレージバックエンドです。
グラフから、SANランダムIOPS値を高くすることができないことは明らかです(平均iopsと平均キューの深さの両方を参照)。
状況を改善するには、次のことを試してください。
my.cnf
ファイルを編集し、行innodb_buffer_pool_size = 8589934592
を追加(または変更)して、innodbバッファープールサイズを増やします。これは、問題の原因となっているVMWareストレージスタックのようです。ホストを独自のハードウェアに移動した場合でも、共有VMWareストレージでは、同じデータストアを使用するすべてのワークロードが同じストレージリソースを使用することに注意してください。 VMWareは、ストレージの生のパフォーマンスをVMに渡すのが上手になりましたが、生のデバイスほど良くはありません。
この理論を次のようにテストします。VMのクローン)へのrawデバイスマップを作成し、テストを再実行します。物理サーバーの結果に非常に近い場合は、問題があります。編集:Windows 7からrawデバイスを使用できない場合は、サーバーOSを使用して試す必要があります。rawデバイスに到達する前に問題が解決する場合は、別の回答があります:P
私のショップでは、まだVMWare 4でprodを実行しているため、すべてのデータベースにRDMを使用する必要があります。より良いバージョンのVMWareを使用している限り、それほど遠くまで行く必要はないかもしれませんが、このデータベースのさまざまなストレージポートに独自のLUNを備えたデータストア専用にすることを試してみてください。