WebFOCUS安定稼働で知っておくべきパラメータ3選!

サポぶろぐ

皆さん、はじめまして!株式会社アシストでWebFOCUSのサポートを担当しています津田です。

サポぶろぐ栄えある1つ目のテーマに選ばれたのは、「WebFOCUSを安定稼働させるために
システム管理者が知っておくべきパラメータ3選」です!

日々サポートセンターへ寄せられるお問い合わせの中から、お問い合わせ頂く回数が多く、
また「WebFOCUSを安定稼働させるなら最低限知っておくべき!」とサポートセンターの
メンバーがイチ押しするパラメータを3つ紹介します!

 ・maximum          :エージェントの最大同時起動数
 ・agent_refresh     :エージェントのリフレッシュタイミング
 ・connection_limit :リクエストのタイムアウト時間(秒)

🔹パラメータ紹介🔹

■maximum
WebFOCUSでは1つのレポートやグラフの処理に1つのエージェントを使います。
そのため、同時に複数のレポートを実行すると複数のエージェントが同時に仕事をする
状態になります。

maximumは同時に仕事ができるエージェント数の最大値を設定するコマンドです。
つまり、同時に実行できる処理の最大数を制限するためのコマンドになります!

maximumに設定した値を超えた数のリクエストを同時に実行すると、no free agents
(エージェント枯渇)のエラーが発生して、既存の処理が終了するまでそれ以上処理を
実行できなくなります。
デフォルトは40です。

<どうして最大数を設定するの?>
数を無限に設定すればエラーが出なくなるからいいじゃん!と思うかもしれませんが、
エージェントの数は一定数に設定しておく方がおすすめです。

なぜなら、エージェント1つにつき処理内容に応じたCPU、メモリを消費するからです。
エージェントの数を無限に設定していると、無限にサーバのリソースを使い続けてしまいます。
リソースの使いすぎでサーバーが停止してしまう…などという自体を防ぐためには、
エージェントの数はある程度に抑えておくことが必要です!

 💡注意点
 ライセンスによってはmaximumの値を変更できない場合がございます。
 貴社のライセンスでの変更可否につきましては弊社担当技術までお問い合わせください。

■agent_refresh
エージェントリフレッシュ(agent_refresh)は、エージェントの累積実行回数を設定する
パラメータです。
1つのエージェントはここで設定した数のリクエストを処理すると、停止されます。 
デフォルトは100です。

<エージェントリフレッシュが必要な理由>
1つのエージェントを永遠に停止せず使い回し続けると、ごみが残る可能性があります。

各エージェントは起動中はそれぞれ専用の一時フォルダを持っており、処理の内容によっては
その中に中間ファイルを作成します。
ある処理で作成された中間ファイルが何らかの原因で残り続け、後続の処理に影響を与えてしまう
場合が稀にあります。
そのため、定期的にエージェントを停止させ、一時フォルダごと削除することで長く安定して
稼働することができるようになります!

<エージェントリフレッシュを1より大きく設定するメリット>
ごみが残る危険性があるなら、1処理ごとにリフレッシュすればいいのでは?と思うかも
しれませんが、リフレッシュ間隔を開けることにもメリットがあります。

エージェントリフレッシュの回数を減らすことで、ディスクIOの消費を抑えることができます!

サーバスペックや使用用途(処理数)によっては、エージェントの再起動時にはディスクIOを
消費する可能性があります。
過度な消費を抑えるため、デフォルトでは100を設定しています。

■connection_limit
リクエストの処理時間がここで設定した時間を超えると、自動的にエー ジェントが停止され、
timeoutエラーが返されます。
設定時間のデフォルトは -1(無制限)になっています。

1つの処理が何時間も続いている場合、その分サーバのリソースが消費されてしまいます。
また、複数の処理が長時間実行され続けていると、同時に処理されるリクエスト数が増えてしまい、
予期せず同時実行数の上限を超えてしまうケースもあります。

そのため、一定時間でリクエストを強制終了するように設定しておく必要があります。

🔹パラメータの確認/変更手順🔹

※WebFOCUS8.2.06の場合の手順を記載しています。


 1.Webコンソール(http://サーバ名:8121/)に管理者ユーザでアクセスします。

 2.画面左から[ワークスペース]アイコンをクリックします。

 3.ツリーから[データサービス]配下の[DEFAULT]を右クリック – [プロパティ]を選択します。

 4.[miximum]、[agent_refresh]、[connection_limit]の値をそれぞれ確認してください。
  変更する場合は、数を書き換えて画面下部の[保存]を選択します。


🔹どれくらいの値に設定すればいいのか🔹

残念ながら固定の推奨値はありません
どれくらいのユーザが同時に使用する可能性があるか、WebFOCUSサーバにはどれくらい
リソースの余裕があるかによって、設定可能な値、最低限必要な値が異なってくるため、一律で
これくらいの設定値が望ましいということはありません。

ログにno free agentが発生しているから同時実行数を増やしてみる、何時間も実行結果が
返ってこない処理があるからタイムアウト時間を設定してみるなど、必要に応じてパラメータの
値を検討してください。

また、値を決定するときの参考情報としては….

 ・miximumには想定される最大接続人数よりも大きい値を設定しておく

 ・実際に処理を実行した際に使用されたCPU、メモリ、ディスクのサイズと、
  WebFOCUSサーバのリソースの空きを考慮し、同時に何処理までなら耐えられるか
  負荷テストを行う

など、環境、使用状況に応じて適切な値を模索してみてください!

次回のテーマは、「スタイルシートはここに置け!」です。
独自のスタイルシートを作成したい方は必見です!!

<この記事をかいた人>

株式会社アシスト DX推進技術本部データ活用技術統括部  津田 明日香
入社歴   : 2018年新卒入社、4年間 WebFOCUS のサポートを専任
趣味     : アニメ鑑賞、最近はVtuberに熱中
ひとこと : 雨にも負けず、風にも負けずサポセン稼働中
      (なお土日は休みます)