2

假设我有一个使用 php-fpm 运行的 php 应用程序。以下是 php/php-fpm 和 opcache 的选项。如何计算所有组件使用了多少内存?

memory_limit=128M
...
opcache.memory_consumption=128M
...
[www]
pm = dynamic
pm.max_children = 2
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 2

这是我的想法。php-fpm 正在启动 1 个 128 MB 和 opcache 128MB = 256 MB 的进程。如果 php-fpm 创建一个新的服务器/进程,我们将有 2 个 256 MB 的进程和 opcache 128 MB = 384 MB。那是对的吗?

背景是计算 Kubernetes 部署的正确内存限制。

4

1 回答 1

0

如果您在谈论应用程序使用多少内存,您可以使用类似 ps aux | grep -P "fpm|COMMAND"

一旦你有了它,例如 10MB,你就知道你的 FPM 线程正在使用多少 MB。这是你的孩子。

接下来,您需要知道您的服务器正在使用多少内存。打开htop,按 mem ( ) 排序shift + m,将所有与 php 无关的最高 mem 使用量取为 1MB 以上,将它们加起来,这就是你当前的服务器使用量(非 php)。

如果您可以在检查时加载服务器,这会有所帮助,特别是在您运行 mysql 时,这会使用大量内存,因此如果您在检查时加载服务器会有所帮助。

例如,如果你发现你的 8GB 服务器只使用 512MB 内存,你可以为它保留一些额外的空间,比如 750MB 或 1GB。剩下的 7GB 除以您的应用程序内存使用量。10MB/7GB=700线程/孩子。

于 2020-09-19T00:11:57.343 回答