Solaris Resource Manager ソフトウェアは、CPU と仮想メモリーの使用量を管理することで、Web サーバー上の資源を管理できます。Web サーバーを実行するシステムでは、3 つの基本的なトポロジーを使用できます。
Web サーバー全体で使用できる資源の量を制御することで、単一の Web サーバーを管理できます。Web サーバーが他の作業負荷と統合されている環境では、この方法が役立ちます。これは最も基本的な資源管理の方法であり、他の作業負荷が Web サーバーの性能に影響を与えず、逆の場合も同様です。たとえば、Web サーバーの CGI スクリプトがメモリーリークを発生して制御不能になった場合、システム全体でスワップ空間が不足するのではなく、Web サーバーだけに影響が出ます。
この例の Web サーバーには割当数 20 を指定していますが、これは、データベースでプロセッサへの要求が過度に大きくなった場合、プロセッサ資源の最低 20 パーセントを保証することを意味しています。
補足的な Web サーバーの例については、「Web フロントエンドプロセスの追加」を参照してください。
単一 Web サーバー内で資源管理を使用して動作を制御するには、いくつか条件が必要なことがあります。たとえば、単一 Web サーバーは、それぞれが独自の cgi-bin プログラムを持つ多くのユーザーで共有されることがあります。
この場合に cgi-bin プログラムの 1 つでエラーが発生すると、Web サーバー全体で処理が遅くなることがあります。メモリーリークが発生した場合、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 の資源制御と制限機能のほとんど、あるいはすべてを活用できます。
cpu.shares を使用していろいろな Web サーバーに特定の比率で資源を割り当てることができます。
memory.limit を使用して、Web サーバーが使用する仮想メモリーの容量を制限できますが、これによって、ある Web サーバーが原因で、他の Web サーバーがメモリー割当による障害を発生することがなくなります。
プロセス単位のメモリー制限によって、1 つの cgi-bin プロセスが使用する仮想メモリーの容量を制限できます。これによって、cgi-bin プロセスが Web サーバーを停止させることを防止します。
Web サーバーに接続できるプロセスの最大数を指定することで、同時に実行できる cgi-bin プロセスの数を効果的に制限します。