Sybase 資料一覧

Sybaseのプロセス管理方法とプロセスの強制終了手順

2007/9/11更新

対応バージョン: 11.9.2

Adaptive Serverによって実行されているプロセスは通常のUNIXプロセスと同じくユニークなプロセスIDが割り当てられる。

これらのID番号および各プロセスについてのその他の情報は、master..sysprocessesに保管される。

sp_whoにてこれらの情報のほとんどを参照することができる。

1> sp_who
2> go
 fid spid status     loginame origname hostname blk dbname cmd              
 --- ---- ---------- -------- -------- -------- --- ------ ---------------- 
   0    1 running    sa       sa       hostA      0 master SELECT           
   0    2 sleeping   NULL     NULL                0 master NETWORK HANDLER  
   0    3 sleeping   NULL     NULL                0 master DEADLOCK TUNE    
   0    4 sleeping   NULL     NULL                0 master MIRROR HANDLER   
   0    5 sleeping   NULL     NULL                0 master CHECKPOINT SLEEP 
   0    6 sleeping   NULL     NULL                0 master HOUSEKEEPER      
   0    7 recv sleep user_1   user_1   hostB      0 db1    AWAITING COMMAND 
   0    8 recv sleep user_2   user_2   hostC      0 db2    AWAITING COMMAND 
   :

シングルエンジンのサーバ上でsp_whoを実行すると「実行中の」sp_whoプロセスおよび他の全ての「実行可能」またはスリープ状態にあるプロセスを確認できる。

マルチエンジンのサーバではエンジンごとに「実行中の」プロセスが存在する。

実行中のプロセスを強制終了するにはkillを使用する。

1> kill <spid>
2> go

プロセスを強制終了する必要がある状況としては、例えばプロセスが暴走している時やロックを確保したままでプロセスがハングアップしている時などである。

また、データベース接続を多数保持したままスリープしていて他のプロセスが新たに接続できなくなっている場合などもある。

システム管理者は次のようなプロセスを強制終了できる。

システムプロセスでないプロセス(*)
waitforコマンドなどでアラームを待っているプロセス
ネットワークの送信または受信を待っているプロセス
ロックを待っているプロセス
ファミリ内の他のプロセスからの同期メッセージを待っているプロセス
ほとんどの実行中または「実行可能な」プロセス

(*) 前述のsp_whoの結果の例でいうと、spid 2〜6のプロセスは強制終了できない。これらはログイン名がNULLであることとホスト名がないことからシステムプロセスであることがわかる。

Adaptive Serverでは終了していない全てのトランザクションを正常にロールバックしてプロセスが使用している全てのシステムリソースを解放できる場合にかぎりプロセスの強制終了を実行できる。

ファミリの一部であるプロセスではファミリ内の全てのプロセスを同時に強制終了する必要がある。

sp_whoで確認できるプロセスの状態と、各状態においてkillコマンドを実行した時の挙動を以下に示す。

recv sleep

状態

ネットワークの読み取り待ち

killコマンドの効果

即時

send sleep

状態

ネットワークの送信待ち

killコマンドの効果

即時

alarm sleep

状態

「waitfor delay "10:00"」などのアラーム待ち

killコマンドの効果

即時

lock sleep

状態

ロックの取得待ち

killコマンドの効果

即時

sync sleep

状態

ファミリ内の他のプロセスからの同期メッセージ待ち

killコマンドの効果

即時。ファミリ内の他のプロセスも強制終了可能な状態にする

sleeping

状態

ディスクI/Oまたはその他のリソース待ち

killコマンドの効果

通常「ウェイクアップ」すると直ちに強制終了される。スリープしているいくつかのプロセスはウェイクアップせず、クリアするためにサーバをリブートする

runnable

状態

実行可能なプロセスのキュー内にある。

killコマンドの効果

即時

running

状態

サーバエンジンの1つでアクティブに実行されている。

killコマンドの効果

即時

infected

状態

サーバが重大なエラー状態を検出した。この状態はめったに発生しない。

killコマンドの効果

killコマンドは使用しないほうがよい。プロセスをクリアするためにサーバをリブートしなければならない可能性が高い

background

状態

ユーザプロセスではなくAdaptive Serverによって実行されるスレッショルドプロシージャのようなプロセス

killコマンドの効果

即時。細心の注意を払ってkillコマンドを実行する。慎重にsysprocessesをチェックしてからバックグラウンドプロセスを強制終了することをすすめる

log suspend

状態

プロセスがログのラストチャンススレッショルドに到達して中断された

killコマンドの効果

即時