web-dev-qa-db-ja.com

何が原因でIO SANで待機しますか?

IOサーバーで表示されたら待機します。これは、IOが追いつくのを待つ間、CPUがブロックされていることを意味します [ソース]

SAN統計が高いIO待機を示す理由を理解しようとしています-これは、SAN CPU SANディスクによってブロックされていますか、それとも他の何かですか?

6
Robert MacLean

A SANは、物理法則により、ローカルディスクよりもはるかに高いIOレイテンシーを持ちます。したがって、アプリケーションが大量の小さな書き込みを行っている場合、fsync()それぞれの後に、たくさんのiowaitが表示されます。

たとえば、これは多くの小さなトランザクションを含む同じデータセットの2つのmysqlレプリカントです。SANのスレーブがIOの実行により多くの時間を費やしていることがわかります。

さん: enter image description here

地元:

enter image description here

8

SAN待機時間は、ストレージがボトルネックであることを意味する場合があります。サーバーの設定やサーバーとストレージ間の接続の場合もありますが、SANディスクの待機時間が表示される場合は、単にビジー状態のSANであることがよくあります。

まず、ボリュームをバックアップしているディスクのパフォーマンスを確認します。 IO/sまたはMB/sの読み取りまたは書き込みの急増、および潜在的にキャッシュ使用率の急上昇を探しています。調査しているボリュームに関係するハードウェアのみを見てみてください。また、時間を少し前後に振り返って、問題を引き起こさなかったより高いスパイクがあったかどうかを確認します。もしそうなら、ストレージハードウェアが問題であった可能性は低いです。ストレージのハードウェアボトルネックの修正措置には、このボリュームを別のプールまたはRAIDに移行すること、またはスピンドルまたはキャッシュの数を増やすことが含まれる場合があります。

次に、サーバーのキューの深さの設定を確認します。キューの深さが非常に高い場合、サーバーは、使用率が高い期間に待ち時間が長くなります。キューの深さは、ストレージがサーバーにIO)を調整するように指示する方法です。32は、ほとんどのサーバーOSとほとんどのストレージデバイスでサポートされる適切な平均数です。私は見たことがあります。仕事の高低も見ましたが、1024などに設定すると、待ち時間が長くなる可能性があります。キューの深さが非常に大きい状況では、サーバーは必要なものをすべてキューに入れます。サーバーは、何かがキューに入ってから出てからの待機時間を測定するため、待機時間が長くなりますが、これを行うと、ストレージはキューの深さがはるかに浅い場合と同じ速度で処理を実行します。 。

最後に、サーバーのエラーログを確認します。転送レベルの問題(ディスクタイムアウトやパス障害など)がないことを確認します。ある場合は、スイッチを調べてください。

5
Basil

サーバー上と同じように測定されます。使用可能なハードウェアリソースで処理できるよりも多くのIO要求が着信します。

1
EEAA

高IO SAN管理ソフトウェアによって報告された待機)SANハードウェアがSANクライアント。これは、ハードウェアに負荷の容量がないか、障害が発生してパフォーマンスが低下している可能性があるためです。

パフォーマンスの低下を引き起こすゆっくりと故障するドライブは、特にRAID5セットアップでは、実際にはかなり一般的です。すべてのドライブのSMARTログを取得すると、修正されたエラーの数が非常に多いドライブが見つかるはずです(これらのエラーの修正には時間がかかります。個々のエラーが一定の時間が経過すると、RAIDコントローラーはエラーをログに記録しませんが、それらのエラーを大量に積み上げると、多くの時間がかかります。そのため、パフォーマンスが低下します。)

1
longneck