全体として見ると、調整にはクライアントの調整も含まれます。クライアントを調整した方が、サーバーを調整するより性能が改善されることがあります。たとえば、 100 あるクライアントの 1 台ごとに 4 MB のメモリーを増設することで、非常に効果的に NFS サーバーの負荷を小さくすることができます。
%プロンプトに対して nfsstat -c と入力して、クライアント統計情報を調べ、NFS に関係する問題がないか確認します。
client % nfsstat -c Client rpc: calls badcalls retrans badxids timeouts waits newcreds 384687 1 52 7 52 0 0 badverfs timers toobig nomem cantsend bufulocks 0 384 0 0 0 0 Client nfs: calls badcalls clgets cltoomany 379496 0 379558 0 Version 2: (379599 calls) null getattr setattr root lookup readlink read 0 0% 178150 46% 614 0% 0 0% 39852 10% 28 0% 89617 23% wrcache write create remove rename link symlink 0 0% 56078 14% 1183 0% 1175 0% 71 0% 51 0% 0 0% mkdir rmdir readdir statfs 49 0% 0 0% 987 0% 11744 3%
この nfsstat -c コマンドの出力例では、合計で 384687 回のコールがあり、そのうち再送信 (retrans) と時間切れ (timeout) が、それぞれ 52 回発生しています。
各フィールドの意味は、以下のとおりです。
表 2-9 nfsstat -c コマンドの出力例ヘッダー | 説明 |
---|---|
calls |
コール数の合計。 |
badcalls |
RPC によって拒否されたコール数の合計。 |
retrans |
再送信回数の合計。 |
badxid |
1 つの NFS 要求に対して確認が重複した回数。 |
timeout |
タイムアウトが発生したコール数。 |
wait |
使用できるクライアントハンドルがなかったためにコールが待たされた回数。 |
newcred |
確証情報のリフレッシュが求められた回数。 |
nfsstat -c コマンドの出力の説明と対処方法を以下に示します。
表 2-10 nfsstat -c コマンドを実行して得られる出力と、それに対する処置
問題 |
処置 |
---|---|
retrans 値が全コール数の 5 %を超える |
サーバーに要求が届いていません。 |
badxid 値と badcalls 値がほぼ等しい |
ネットワークの動作が遅くなっています。原因を究明してください。問題を解消するには、高速なネットワークにするかサブネットをインストールすることを検討してください。 |
badxid 値と timeouts 値がほぼ等しい |
大部分の要求はサーバーに届いていますが、予測よりサーバーの動作が鈍いことが考えられます。nfsstat -m を使用して予測時間を調べてください。 |
badxid 値がゼロに近い |
ネットワーク上で要求が失われています。mount オプションの rsize 値と wsize 値を小さくしてください。 |
null が 0 より大きい |
null コール数が多いということは、オートマウンタが頻繁にマウントを再試行していることを意味します。マウント時のタイムアウト時間が短かすぎます。オートマウンタコマンド行のマウント時タイムパラメタ (timeo) の値を大きくしてください。 |
NFS マウントしている各ファイルシステムの統計情報を表示します。
統計情報は、サーバー名とアドレス、マウントフラグ、現在の読み取り、書き込みサイズ、伝送回数、ダイナミック伝送に使われているタイマー情報から構成されます。
client % nfsstat -m /export/home from server:/export/home Flags: vers=2,hard,intr,dynamic,rsize=8192,wsize=8192,retrans=5 Lookups: srtt=10 (25ms), dev=4 (20ms), cur=3 (60ms) Reads: srtt=9 (22ms), dev=7 (35ms), cur=4 (80ms) Writes: srtt=7 (17ms), dev=3 (15ms), cur=2 (40ms) All: srtt=11 (27ms), dev=4 (20ms), cur=3 (60ms)
nfsstat -m コマンドの出力例の用語の意味は、以下のとおりです。
表 2-11 nfsstat -m コマンドの出力ヘッダー | 説明 |
---|---|
srtt |
正常時の往復時間。 |
dev |
予測偏差。 |
cur |
現在のバックオフタイムアウト値。 |
上記のコードの ( ) 内の数字は、ミリ秒で表した実際の時間です。その他の値は、オぺレーティングシステムのカーネルによって保持されている未スケール値で、無視してかまいません。応答時間は、ルックアップと読み取り、書き込みの操作の組み合せ時について示されています。nfsstat -m コマンドを実行して得られる出力と対処方法を以下にまとめます。
表 2-12 nfsstat -m コマンドを実行して得られる出力と処置
問題 |
処置 |
---|---|
srtt 値が 50 ミリ秒より大きい |
マウントポイントの反応が鈍いことが考えられます。前述の手順を参考に、ネットワークとサーバーのマウントポイントを提供しているディスクを調べてください。 |
"NFS server not responding" というメッセージが表示される |
メッセージが表示されないようにして、かつ性能を向上させるには、/etc/vfstab ファイルの timeo パラメタ値を大きくしてください。初期 timeo パラメタ値の 2 倍を基準にしてください。vfstab ファイルの timeo パラメタ値を変更して、nfsstat -c コマンドを実行します。badxid 値を調べて、表 2–10 の nfsstat -c コマンドの推奨処置に従ってください。 |
Lookups: cur 値が 80 ミリ秒より大きい |
要求の処理に時間がかかりすぎています。ネットワークかサーバーのいずれかの動作が遅いことが考えられます。 |
Reads: cur 値が 150 ミリ秒より大きい |
要求の処理に時間がかかりすぎています。ネットワークかサーバーのいずれかの動作が遅いことが考えられます。 |
Writes: cur 値が 250 ミリ秒より大きい |
要求の処理に時間がかかりすぎています。ネットワークかサーバーのいずれかの動作が遅いことが考えられます。 |