我知道使用 ps 获取每个 apache2 进程使用的平均内存的方法。我观察了一下,结果显示大约是 18MB(尽管过去两天它似乎从平均 18MB 飙升到了 25MB)。
我们的服务器正在提供一个 API,该 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 进程的内存使用情况以及如何减少/优化它,有什么建议吗?