我知道使用 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 進程的記憶體使用情況以及如何減少/最佳化它有什麼建議嗎?