Memory

httpd 記憶體使用情況

  • September 7, 2016

httpd( Apache/2.2.29) 記憶體使用有一些問題。

隨著時間的推移,程序中的記憶體使用率httpd逐漸上升,直到最終達到 100%。

我上次重新啟動httpd大約是 24 小時前。輸出free -m為:

[ec2-user@www ~]$ free -m
            total       used       free     shared    buffers     cached
Mem:          1655       1415        239          0        202        424
-/+ buffers/cache:        788        866
Swap:         1023          4       1019

為了證明它是肯定的httpd,我重新啟動httpdfree -m再次執行:

[ec2-user@www ~]$ sudo service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
[ec2-user@www ~]$ free -m
            total       used       free     shared    buffers     cached
Mem:          1655        760        894          0        202        360
-/+ buffers/cache:        197       1457
Swap:         1023          4       1019

因此,重新啟動 Apache 會佔用 239 Mb 到 894 Mb 的可用記憶體——這似乎是一個很大的飛躍。

我一直在瀏覽目前啟用的 Apache 模組(有很多)和禁用/刪除的列表mod_wsgimod_perl(執行基於 PHP 的 Web 應用程序的伺服器都不需要這些模組 - 特別是 Magento)。

基於https://servercheck.in/blog/3-small-tweaks-make-apache-fly,我執行ps aux | grep 'httpd' | awk '{print $6/1024 " MB";}'並獲得以下輸出:

[root@www ~]# ps aux | grep 'httpd' | awk '{print $6/1024 " MB";}' 15.1328 MB 118.09 MB 127.449 MB 129.059 MB 117.734 MB 113.824 MB 125.062 MB 123.922 MB 119.855 MB 108.066 MB 136.23 MB 114.031 MB 113.27 MB 110.695 MB 102.113 MB 113.234 MB 186.816 MB 118.602 MB 0.835938 MB

執行另一個建議的診斷工具返回以下內容MaxClientsps aux | grep 'httpd' | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'

[root@www ~]# ps aux | grep 'httpd' | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
110.212 MB

此伺服器(亞馬遜 AWSm1.small實例)具有1.7 GbRAM。因此,因此:

關於如何最好地調整httpd設置或如何診斷究竟是什麼可能導致這種情況的任何進一步的指示/建議?

這是我為“解決”它所做的工作:

  1. 設置MaxClients 7(基於(1740.8Mb Memory on server - 900Mb for MySQL + other stuff) / 111Mb average usage per httpd process = 7.5747747747747747747747747747748

所以:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients         7
MaxRequestsPerChild  4000
</IfModule>
  1. 禁用所有 Apache 模組,除了authz_host_module, log_config_module, expires_module, deflate_module, setenvif_module, mime_module, autoindex_module, negotiation_module, dir_module, alias_module, rewrite_module,php5_module
  2. 刪除mod_ssl包,因為客戶端沒有使用https://任何東西。

一旦這個新配置執行了一段時間,我會報告,看看這是否解決了它。

這裡的一些靈感來自:http ://www.activoinc.com/blog/2009/08/31/performance-optimized-httpd-conf-for-magento-ecommerce/和http://www.activoinc.com/下載/httpd.conf-magento

引用自:https://unix.stackexchange.com/questions/187112