如何了解並優化每個 Apache 進程使用的內存

如何了解並優化每個 Apache 進程使用的內存

我知道使用 ps 來取得每個 apache2 進程所使用的平均記憶體的方法。我觀察過它,結果約為 18MB(儘管過去 2 天似乎從平均 18MB 飆升至 25MB)。

我們的伺服器正在提供一個 API,它接受一些資料並將其儲存在 mysql 資料庫中。該 API 是用 PHP 編寫的。我使用 PHP mem_get_usage 和 mem_get_peak_usage 函數來了解記憶體使用情況,但它們遠未接近 18MB..(大多數顯示低於 1MB)

所以我不明白每個 apache 進程消耗這麼多記憶體的原因是什麼。這已經成為一個瓶頸,因為我們的總 RAM 是有限的,而且由於這種消耗,我們被迫限制 maxrequestworkers,這會在流量高時為客戶端服務帶來延遲。

ps 的典型輸出:

www-data 30024  0.0  0.3 494384 26124 ?        S    04:27   0:03 /usr/sbin/apache2 -k start
www-data 30077  0.0  0.3 494368 26136 ?        S    04:28   0:04 /usr/sbin/apache2 -k start
www-data 30078  0.4  0.3 494360 25960 ?        S    04:28   0:21 /usr/sbin/apache2 -k start
www-data 30080  0.1  0.3 494376 26140 ?        S    04:28   0:05 /usr/sbin/apache2 -k start
www-data 30115  0.2  0.3 494448 26180 ?        S    04:28   0:11 /usr/sbin/apache2 -k start
www-data 30124  0.1  0.3 494376 26212 ?        S    04:28   0:07 /usr/sbin/apache2 -k start
www-data 30132  0.0  0.3 494376 26108 ?        S    04:28   0:03 /usr/sbin/apache2 -k start
www-data 30135  0.0  0.3 494376 26164 ?        S    04:28   0:04 /usr/sbin/apache2 -k start
www-data 30219  0.0  0.3 494352 26108 ?        S    04:29   0:03 /usr/sbin/apache2 -k start

關於如何監控每個 apache2 進程的記憶體使用情況以及如何減少/最佳化它有什麼建議嗎?

相關內容