• 検索結果がありません。

負荷情報収集方式 (lbpipeclient)

ドキュメント内 <NQS機能利用の手引き> (ページ 172-175)

6. JobCenter 構成管理

6.7. 負荷分散環境

6.7.3. 負荷情報収集方式 (lbpipeclient)

負荷情報収集方式はパイプクライアントがパイプキューに設定してある目的地のホストの負荷状 態を照会し、転送可能なホストの中で最も負荷の低いものに転送します。

本機能は現在のバージョンではサポートしていない機能となります。

図6.4 負荷情報収集方式のリクエスト転送イメージ

lbpipeclient には、いくつかのオプションを指定できます。これを調整することにより、使用形 態やリクエストの性質に合わせてチューニングを行うことができます (チューニングについては後 述)。

/usr/lib/nqs/lbpipeclient [ -f $time] [ -n $number] [ -i $interval]

-t $time

負荷情報を更新する時間を「分」単位で指定します。 number × interval (分) です。

lbpipeclient は負荷情報を一度収集した後、本パラメータで指定された時刻の間その情報をもと に負荷分散を行います。この時間を長くするとホスト間のバランスが悪くなりますが、短くする と、負荷情報収集のためのオーバヘッドが増えます。

目安としては、リクエスト実行時間の平均値の数倍程度を設定してください。

-n $number

転送制限数でリクエストの個数を指定します。デフォルト値は5(個) です。

転送先マシンのバッチキュー上にある queued 状態のリクエスト数の上限を指定します。目的地 ホストがその上限に達している場合には、そのホストにはリクエストを転送しません。すべての 目的地ホストがこの上限に達している場合には、 interval で指定する時間待った後にリトライし ます。

この値を大きくすると、リクエストは連続して実行され効率は良くなりますが、時間のかかるリ クエストが混ざっていた場合などに、ホスト間の負荷バランスが悪くなります。

この値を小さくするとホスト間のバランスは良くなりますが、リクエスト間にアイドル状態が生 じて効率が低下します。

実行時間の長いリクエストが多い場合は、相対的に転送効率の影響は小さくなるので小さい値を 設定し、逆に実行時間の短いリクエストが多い場合は、大きい値を設定するとよいでしょう。

-i $interval

転送制限数に達したときのキュー休止時間を「分」単位で指定します。デフォルト値は3(分) で す。

リクエスト数が number に達し、転送できなかったときのリトライ間隔です。

目安としては、 (リクエスト実行時間の平均値) × number よりやや小さい値を設定してくださ い。

■lbpipeclient のパラメータ設定

JobCenterの利用状況により、期待している負荷分散性能を発揮できていない場合

に、lbpipeclient のパラメータ調整を行うことで、負荷分散性能の向上が可能となります。

ここでは、実際の利用に当たってのパラメータの調整法を説明していきます。負荷分散の運用 がうまく行われていない場合の典型的な症状として、いくつか例を挙げて説明します。また、

その解決のために必要なパラメータ調整について同時に説明します。

1. 「分散のバランスが悪い」

たとえば、リクエストの実行時間にばらつきがある場合について考えてみます。

負荷分散した結果、偶然にも実行時間の長くかかるリクエストが 1 つの転送先に集中するこ とがあるかもしれません。または、実行時間の長いリクエストの後で、実行時間の短いリク エストが順番を待っているかもしれません。

その結果、「転送先によってはリクエストがすべてなくなっているのに、その転送先ではい くつものリクエストが実行待ちになっている」という状況が発生します。

この場合は number(転送限界数) の値を小さくします。たとえば number を 0 にすれば、

「転送先に実行中のリクエストがなくなりしだい投入する」という設定が可能です。

また、 number を操作した場合には同時に interval(待ち状態の期間) も変更することをお勧 めします。number の値を小さくすることで、 2.の「ムダな待ちが多い」症状が発生するこ とが考えられるためです。

2. 「ムダな待ちが多い」

lbpipeclient がリクエストを続けて転送していくと、そのうち転送限界に達します。そして 一定期間の休止状態に入ってリクエストの終了を待ちます。

この休止状態の間に、転送先のすべてのリクエストが実行終了してしまうことがあります。

すなわち「転送先にはリクエストがすべてなくなっているのに、 lbpipeclient のキュー内に は転送待ちのリクエストがある」ということが起こります。

これについては number(転送限界数) の値を大きくすることで、待ち状態に入る回数を抑え ることができます。または、 interval(待ち状態の期間) の値を小さくすることで、転送先の リクエストが実行終了後にできるだけ早く転送を再開するようにします。

また、 time(負荷情報の更新時間) が長いために、転送先の実際のリクエスト数を把握できて いないことが考えられます。lbpipeclient は多めにリクエスト数を見積もる傾向があり、結 果、リクエスト終了待ちの状態に入ってしまいます。

その場合は time の値を少し小さく設定してください。

3. 「lbpipeclient 自体の負荷が大きい」

負荷情報の更新回数が多いために lbpipeclient 自体の負荷が増大し、リクエストの転送や実

その場合は time(負荷情報の更新時間) の値を大きくします。また、リクエストの実行終了待 ちになっている場合ならば、 interval(待ち状態の時間) の値を大きくすることで更新回数を 減らすことができます。

また、JobCenter には lbpipeclient のほかにrrpipeclient が用意してあります。このパイプ クライアントは lbpipeclient よりも負荷が小さいことが特徴です。このため実行時間が短い リクエストが多い場合には、 lbpipeclient を用いるより rrpipeclient を用いた方がよい場合 があります。

調整に当たっての留意点

▪ パラメータを調整することによって、上記のような症状を回避できると思われ ます。しかし各パラメータは上記のような症状の間で互いにトレードオフ関係 にあります。このために、調整によっては逆に思わしくない症状を引き起こす かもしれません。したがって、パラメータ調整はマシンの利用状況によって改 善すべき点を絞りつつ、全体のバランスを崩さないように設定していく必要が あります。

▪ lbpipeclient は、設定された転送先がすべて正常に稼働中の場合にもっとも期 待どおりの動きをします。ネットワークの負荷が高い場合や、転送先にユーザ の実行権がない場合、転送先でキューが停止しているなどの場合には、片寄っ てリクエストが転送されることがあります。

ドキュメント内 <NQS機能利用の手引き> (ページ 172-175)