Solaris Resource Manager 1.3 のシステム管理

Web サーバーの管理

Solaris Resource Manager ソフトウェアは、CPU と仮想メモリーの使用量を管理することで、Web サーバー上の資源を管理できます。Web サーバーを実行するシステムでは、3 つの基本的なトポロジーを使用できます。

統合 Web サーバーの資源管理

Web サーバー全体で使用できる資源の量を制御することで、単一の Web サーバーを管理できます。Web サーバーが他の作業負荷と統合されている環境では、この方法が役立ちます。これは最も基本的な資源管理の方法であり、他の作業負荷が Web サーバーの性能に影響を与えず、逆の場合も同様です。たとえば、Web サーバーの CGI スクリプトがメモリーリークを発生して制御不能になった場合、システム全体でスワップ空間が不足するのではなく、Web サーバーだけに影響が出ます。

この例の Web サーバーには割当数 20 を指定していますが、これは、データベースでプロセッサへの要求が過度に大きくなった場合、プロセッサ資源の最低 20 パーセントを保証することを意味しています。

Diagram shows that web server is guaranteed its percentage of processor resources even if another application places excessive demands on the CPU.

補足的な Web サーバーの例については、Web フロントエンドプロセスの追加を参照してください。

単一 Web サーバーにおける詳細な資源管理

単一 Web サーバー内で資源管理を使用して動作を制御するには、いくつか条件が必要なことがあります。たとえば、単一 Web サーバーは、それぞれが独自の cgi-bin プログラムを持つ多くのユーザーで共有されることがあります。

この場合に cgi-bin プログラムの 1 つでエラーが発生すると、Web サーバー全体で処理が遅くなることがあります。メモリーリークが発生した場合、Web サーバーがダウンする可能性さえあります。これを防ぐには、プロセス単位の制限が必要です。

Diagram shows use of per-process limits within a single web server.

複数の仮想 Web サーバーの資源管理

複数の仮想 Web サーバーを実行するのに、統合した形で単一マシンを使用することがあります。このような場合、 httpd Web サーバープロセスのインスタンスが複数存在しているため、Solaris Resource Manager で資源を管理する必要性がもっとも高まります。

Web サーバー構成ファイルでパラメータを設定することで、異なる UNIX ユーザー ID で各 Web サーバーを実行させることができます。こうすることで、各 Web サーバーは、Solaris Resource Manager 階層にある異なる l ノードに効果的に接続されます。

たとえば、Sun WebServerTM の場合、構成ファイル /etc/http/httpd.conf に次のようなパラメータが設定されます。


# Server parameters
 server  {
   server_root                   "/var/http/"
   server_user                   "webserver1"
   mime_file                     "/etc/http/mime.types"
   mime_default_type             text/nlain
   acl_enable                    "yes"
   acl_file                      "/etc/http/access.acl"
   acl_delegate_depth            3
   cache_enable                  "yes"
   cache_small_file_cache_size   8                       # megabytes
   cache_large_file_cache_size   256                     # megabytes
   cache_max_file_size           1                       # megabytes
   cache_verification_time       10                      # seconds
   comment                       "Sun WebServer Default Configuration"
 
   # The following are the server wide aliases
 
   map   /cgi-bin/               /var/http/cgi-bin/              cgi
   map   /sws-icons/             /var/http/demo/sws-icons/
   map   /admin/                 /usr/http/admin/
 
 # To enable viewing of server stats via command line,
 # uncomment the following line
   map   /sws-stats              dummy                           stats
 }

各 Web サーバーを異なる UNIX ユーザー ID で実行するように構成することで、各 Web サーバーに個別に制限値を設定できます。多くの Web サーバーを実行しているマシンの場合、この方法は資源利用の制御と課金の両面でとても役立ちます。

このような場合、Solaris Resource Manager の資源制御と制限機能のほとんど、あるいはすべてを活用できます。

Shares [cpu.shares]

cpu.shares を使用していろいろな Web サーバーに特定の比率で資源を割り当てることができます。

Mem limit [memory.limit]

memory.limit を使用して、Web サーバーが使用する仮想メモリーの容量を制限できますが、これによって、ある Web サーバーが原因で、他の Web サーバーがメモリー割当による障害を発生することがなくなります。

Proc mem limit [memory.plimit]

プロセス単位のメモリー制限によって、1 つの cgi-bin プロセスが使用する仮想メモリーの容量を制限できます。これによって、cgi-bin プロセスが Web サーバーを停止させることを防止します。

Process limit [process.limit]

Web サーバーに接続できるプロセスの最大数を指定することで、同時に実行できる cgi-bin プロセスの数を効果的に制限します。