如何理解和优化每个 Apache 进程使用的内存

如何理解和优化每个 Apache 进程使用的内存

我知道使用 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 进程的内存使用情况以及如何减少/优化它,有什么建议吗?

相关内容