Apache-2.2
為什麼 Apache 執行這麼多程序?這裡的RAM過多?
我注意到 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)來減少記憶體使用量。這樣伺服器就不需要為每個連接指定一個程序/執行緒。