Solaris Resource Manager 1.3 系統管理指南

管理網路伺服器

軟體可以藉由控制 CPU 及虛擬記憶體量,來管理網路伺服器之上的資源。有三種基本的拓樸學可在作為網路伺服器主機的系統上使用。

結合的網路伺服器資源管理

您可以藉由控制整個網路伺服器能用的資源總量,來管理一個單一網路伺服器。這對一個與其他工作量互相結合的網路伺服器環境而言是非常有用的。這也是最基本的資源管理形式,可以有效地防止其他工作量影響到網路伺服器的執行,反之亦然。舉例來說,如果網路伺服器中的一個 CGI 指令集由於記憶體外洩而用盡了控制,整個系統不至於用盡對調空間;而只有網路伺服器會受到影響。

在此範例中,一個網路伺服器會被配置 20 個配分,表示一旦資料庫要求大量的處理機資源,可以保證至少有百分之 20 的處理機資源可供使用。

圖表顯示網路伺服器保證它在處理器資源中的百分比,即使另一個應用程式將過多需求放置在 CPU 上。

請參見放置一個網路 (Web) 前端處理 中其他有關網路伺服器的範例。

單一網路伺服器的精密資源管理

經常會有人要求使用資源管理來控制一個單一網路伺服器之上的行為。舉例來說,單一網路伺服器可以被許多使用者共享,每一位使用者都有其各自的 cgi-bin 程式。

單一 cgi-bin 程式中的一個錯誤可能會導致整個網路伺服器執行緩慢,或是碰到記憶體外洩的情況時,甚至會使整個網路伺服器當機。為了防止這種問題發生,最好是使用每個處理的限制。

圖表顯示在單一網路伺服器中每個處理限制的使用。

多個虛擬網路伺服器的資源管理

通常會利用結合的方式,使單一機器作為多個虛擬網路伺服器的主機。這時,會存在多個 httpd 網路伺服器處理的實例,而且在 Solaris Resource Manager 中也有更多機會能夠充分利用資源控制。

也可能藉由在網路伺服器設置檔案中設定參數,將每個網路伺服器作為一個不同的 UNIX UID 來執行。這會有效地將每個網路伺服器附加至 Solaris Resource Manager 階層中一個不同的 lnode 之上。

例如,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
 }

藉由設置每個網路伺服器,使其作為不同的 UNIX UID 來執行,您可以在每個網路伺服器上設定不同的限制。這對您控制與計算在作為許多網路伺服器的主機之一個機器上的資源用量時會非常有用。

這時您可以利用許多或是所有的 Solaris Resource Manager 資源控制和限制功能:

Shares [cpu.shares]

cpu.shares 可以用來成比例地將資源配置給不同的網路伺服器。

Mem limit [memory.limit]

memory.limit 可以用來限制網路伺服器能用的虛擬記憶體量,以防止任何一個網路伺服器造成另一個伺服器因為記憶體配置的問題而故障。

Proc mem limit [memory.plimit]

每個處理記憶體限制可以用來限制一個單一 cgi-bin 處理可以使用的虛擬記憶體量,以便防止任何 cgi-bin 處理造成其各自的網路伺服器當機。

Process limit [process.limit]

允許附加至一個網路伺服器上的最大處理總數,可以有效地限制同時進行的 cgi-bin 處理數目。