差分
このページの2つのバージョン間の差分を表示します。
blog:2014:2014-10-30 [2014-10-31 00:12] Decomo 作成 |
blog:2014:2014-10-30 [2015-01-06 11:51] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== ターミナルが応答しなくなるほどZFSが超遅くなる謎現象 ====== | ||
- | 2011年にZFSを使い始めてから早4年、小規模なファイルサーバ運用ではまず困る事がないくらいにはZFSの扱いには慣れたが、未だ解決できていない問題が1つある。 | ||
- | システムが応答しなくなるほど、ZFSへのアクセスが遅くなる現象である。 | ||
- | |||
- | ハッキリとした発生条件は未だ掴めていないが、概ね以下の条件を満たすと発生する。 | ||
- | |||
- | * 良い感じに使い古されたプール(断片化が進んでる状態?) | ||
- | * プールの空き容量が少ない | ||
- | * 幾つかの書き込みを同時に行う(ブラウザで2〜3個同時にダウンロードするなど) | ||
- | |||
- | 問題の状態になると、ターミナルで入力が困難になるほどシステムの応答性が低下する。記憶があいまいだが、ロードアベレージ的には特に問題ない値だったハズ。 | ||
- | |||
- | 尚、プールの種類に関係なく発生するっぽい……といっても、ミラーとRAID-ZとRAID-Z+0でしか使った事はないが、何れでも発生している。途中マシン&HDDが変わったり、OSもFreeBSD 8.2→9.0→9.2と更新してるので、特定のハード&ソフトが関係する問題でもないと思われる。 | ||
- | |||
- | 何となくだけど、断片化の線が怪しいんじゃないかなと。というのも、先だって遭遇したプールでは800GB中360GBが未使用だったから空き容量が原因とは考えにくい。ただし、以前、空き容量が100GBを割った事があり、FSの状態としてはそこそこ劣化していると考えられる。また、激遅ゾーン?を抜けるとまた普通の速度に戻るので、書き込もうとしてる領域の状態が悪いとダメっぽい気がする。 | ||
- | |||
- | で、先日、ようやっと原因究明の糸口になりそうなデータが取れた。 | ||
- | |||
- | この症状が発生している時は、書き込みしているにもかかわらず、なぜか物凄い読み込みが発生している。以下、zpool iostatのログ。 | ||
- | |||
- | < | ||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | </ | ||
- | |||
- | 正常な時はこんな感じ。 | ||
- | |||
- | < | ||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 491G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | </ | ||
- | |||
- | どちらもdd if=/ | ||
- | |||
- | ちなみに、ddしつつ読み込みを行い正常な時はこんな感じ。読み込みと書き込みが仲良く同居してる感じですな。 | ||
- | |||
- | < | ||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 474G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 474G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 474G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 474G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 474G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 474G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 474G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 474G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 474G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 474G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 474G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 474G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 474G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | |||
- | | ||
- | pool alloc | ||
- | ---------- | ||
- | zhome 474G | ||
- | mirror | ||
- | ada3p4 | ||
- | ada1p4 | ||
- | ---------- | ||
- | </ | ||
- | |||
- | 何でこんな事が起きるのか、偉い人教えて下さい……。 |