スケーラブルデータベースサーバ HiRDB Version 8 システム運用ガイド(UNIX(R)用)

[目次][索引][前へ][次へ]

8.12 サーバプロセスの状態監視メッセージキュー監視機能

サーバプロセスの沈み込みが発生したサーバでは,UAPのレスポンスの低下やシステムのハングアップなどが起こることがあります。ここでは,メッセージキュー監視機能を使用してサーバプロセスの沈み込みを監視する方法について説明します。

なお,サーバプロセスの沈み込みとは,CPU負荷による処理性能低下,又は入出力障害による入出力遅延によって,サーバプロセスが処理されない状態のままになることです。

<この節の構成>
(1) メッセージキュー監視機能とは
(2) 警告メッセージが出力された場合の対処方法
(3) サーバプロセスの沈み込みの対策方法
(4) 備考

(1) メッセージキュー監視機能とは

HiRDBでは,サーバプロセスの割り当て処理でメッセージキューを使用しています。サーバプロセスの沈み込みが発生すると,メッセージキューからメッセージを取り出せなくなります。HiRDBでは,ある一定時間(これをメッセージキュー監視時間といいます)を超えてもメッセージキューからメッセージを取り出せない場合,警告メッセージ及びエラーメッセージ(KFPS00888-W及びKFPS00889-E)を出力します。これをメッセージキュー監視機能といいます。このメッセージが出力されると,サーバプロセスが沈み込んでいる可能性があります。

メッセージキュー監視時間は,通常600秒間(10分間)です。この監視時間をpd_queue_watch_timeオペランドで変更できます。

(2) 警告メッセージが出力された場合の対処方法

警告メッセージが出力された場合,サーバプロセスが沈み込んでいる可能性があります。この場合,次に示すどちらかの方法で対処してください。

(a) ユニットを再開始する場合

サーバプロセスの沈み込みが発生したユニットを再開始すると,サーバプロセスの沈み込みを解決できることがあります。通常,メッセージキュー監視時間を過ぎると,HiRDBは沈み込みが発生したユニットを異常終了させます。

なお,ユニットを異常終了させたくない場合は,pd_queue_watch_timeover_actionオペランドにcontinueを指定してください。

(b) トランザクションをキャンセルする場合

(a)の方法で対処しない場合(できない場合も含む),サーバプロセスの沈み込みが発生したサーバで実行中のトランザクションをpdcancelコマンドなどで終了させてください。トランザクションが発生していない場合は,サーバプロセスの沈み込みが発生したサーバをOSのkillコマンドなどで終了させた後,沈み込み要因を特定して対策してください。

(3) サーバプロセスの沈み込みの対策方法

メッセージキュー監視対象サーバの,メッセージキュー滞留要因と対策を次の表に示します。

表8-12 メッセージキュー滞留要因と対策

要因 監視対象サーバプロセス 対策
FES BES DS SDS
CPU負荷が高いため,メッセージキューからメッセージを取り出せません。 CPU負荷になっている要因を調査して,対策してください。
入出力障害によって入出力が遅延しているため,メッセージキューからメッセージを取り出せません。 入出力障害になっている要因を調査して,対策してください。
pd_max_usersオペランドの値を超えて同時に接続要求が発生した場合に,メッセージを取り出すプロセス数が不足しています(高速接続機能を使用した場合に発生しやすい)。 同時接続数を減らすか,又は高速接続機能を使用しないで通常接続を行ってください。若しくは,pd_max_usersオペランドの値を大きくしてください。
フロントエンドサーバ,又はユティリティサーバの起動数に比べて,バックエンドサーバ,及びディクショナリサーバの起動数が少ない場合に,メッセージを取り出すプロセス数が不足しています(マルチフロントエンドサーバ環境で発生しやすい)。 pd_max_bes_process,pd_max_dic_process,及びpd_max_usersオペランドの値が正しく指定されているか確認してください。又は,接続数を減らしてください。

(凡例)
○:該当します。
−:該当しません。
参考
HiRDBサーバプロセス数は次に示すオペランドで制限されています。
  • pd_max_server_process
    ユニット内で稼働するサーバ数が多い場合は,このオペランドの指定値を詳細に見積もってください。また,スタンバイレス型系切り替え機能を使用する場合は,系切り替えが発生したときを想定した見積もりが必要になります。
  • pd_max_bes_process
    マルチフロントエンドサーバ,又は1:1スタンバイレス型系切り替え機能を使用する場合は,このオペランドの指定値を詳細に見積もってください。
  • pd_max_dic_process
    マルチフロントエンドサーバを使用する場合は,このオペランドの指定値を詳細に見積もってください。
  • pd_ha_max_server_process
    影響分散スタンバイレス型系切り替え機能を使用する場合は,このオペランドの指定値を詳細に見積もってください。
  • pd_max_users
    同時接続数が多い場合は,適切な値を指定する必要があります。

(4) 備考

メッセージキューから最後に取り出したメッセージの取り出し時間をpdls -d scdコマンドで調べられます。