Apache-2.2

為什麼 Apache 執行這麼多程序?這裡的RAM過多?

  • May 16, 2011

我注意到 Apache 在我的 LAMP 伺服器(ubuntu 10.10)上執行多個程序。我只是在執行一個以 MySQL 作為數據庫的 Wordpress 站點。似乎 www-data 執行的 apache2 超出了應有的範圍(也使用了太多記憶體),我是否正確:

ID      Owner       Size        Command   
31200   www-data    251236 kB   /usr/sbin/apache2 -k start
20678   www-data    250948 kB   /usr/sbin/apache2 -k start
25781   www-data    248888 kB   /usr/sbin/apache2 -k start
31045   www-data    248844 kB   /usr/sbin/apache2 -k start
19926   www-data    246480 kB   /usr/sbin/apache2 -k start
20749   www-data    239380 kB   /usr/sbin/apache2 -k start
32616   www-data    238632 kB   /usr/sbin/apache2 -k start
8846    mysql   238128 kB   /usr/sbin/mysqld
24178   www-data    234228 kB   /usr/sbin/apache2 -k start
32618   www-data    232344 kB   /usr/sbin/apache2 -k start
32615   www-data    232204 kB   /usr/sbin/apache2 -k start
19805   root    208156 kB   /usr/sbin/apache2 -k start

Apache 正在執行多個程序以在客戶端請求進入時讓它們準備好。生成伺服器程序很慢,因此最好讓一個等待客戶端。

對於記憶體使用,您應該考慮帳戶 RES 大小(如頂部所示),即任務使用的物理記憶體量。

為什麼你認為你有太多的 apache2 程序使用太多的記憶體?你能指望什麼?你為什麼這麼期待?

正如 Pawel 的回答所解釋的那樣,apache 使用帶有程序池的每個請求模型(或帶有 mpm_worker 的每個請求的執行緒)。

您可以通過使用基於非阻塞 IO 的 Web 伺服器(例如 nginx)來減少記憶體使用量。這樣伺服器就不需要為每個連接指定一個程序/執行緒。

引用自:https://serverfault.com/questions/269674