スーパーデーモンとは?

Linux上ではさまざまなサーバーサービスを動かすことができます。WEBサーバーやメールサーバー、FTPサーバーなどが例として挙げられますが、いずれも馴染みが深いものだと思います。最近はサーバー機器も高機能となり、潤沢な性能を利用できるようになっていますので、あまり神経質になる必要は少なくなっていますが、かつてはサーバーサービスを起動させることは、大きな負担となり、効率的なメモリなどのコンピュータ資源(リソース)の使い方に気を使う必要がありました。

サーバーはユーザーが利用するクライアントから、いつサービス要求が来たとしても即時に応えなくてはならず、常に起動していないといけないため、負担が大きいためです。ユーザーがWEBを利用する際を例にすれば、ユーザーはWEBページが見たい時にブラウザを立ち上げてWEBサイトを閲覧し、終わったらブラウザを閉じれば良いのですが、サーバー側はそうはいきません。いつくるかわかならいWEBページの閲覧要求に対応するために、サーバーのプログラムを常時起動して、待ち受けています。(これを常駐といいます)プログラムが起動しているということは、CPUやメモリなどのコンピューターリソースをその分消費します。




ここで、世界中に公開しているようなある程度の規模のWEBサーバーであれば、ひっきりなしにサービス要求がやってきます。しかし、サーバーを遠隔から制御するためのtelnetやsshのようなサービスは、管理上の必要性が生じたときのみ利用されます。しかし、いつ何時サービス要求があるかはわかりませんので、たまにしかない接続のために常時起動しておく必要が出てしまいます。これは非常に非効率的です。

そこで考えだされたのが、「スーパーデーモン」と呼ばれる特殊なサーバーサービスです。待ち受けを専用に行うデーモンを用意しておいて、利用頻度の少ないサーバーサービスは、このスーパーデーモンから起動してもらうという手法です。これにより常駐による待ち受けに必要なリソースを低減することができます。

逆にいうと、WEBサーバーやDNSサーバーのように、常時サービス利用要求のある忙しいサーバーをスーパーデーモン経由にしてしまいますと、スーパーデーモンを介在するという余計な仕事が増えるため、逆に非効率的になります。殆ど利用のないサービスをスーパーデーモン経由にするよう、設計に工夫が必要です。

Linuxでは、スーパーデーモンとして、長らくinetdというものがつかわれていましたが、現在ではより高機能でセキュリティレベルの高いxinetdが主に利用されています。