假设我有一个运行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部署的正确内存限制。
答案 0 :(得分:1)
答案 1 :(得分:0)
如果您正在谈论应用程序使用了多少内存,则可以使用类似
ps aux | grep -P "fpm|COMMAND"
一旦有了,例如10MB,就知道FPM线程正在使用多少MB。这是你的孩子。
接下来,您需要知道服务器正在使用多少内存。打开htop
,按内存(shift + m
排序,将与php无关的1MB以上的所有顶级内存使用情况,加总起来,即您当前的服务器使用情况(非php)。
如果您可以在检查时加载服务器,这会有所帮助,特别是如果正在运行的mysql使用大量内存,那么如果在检查时将服务器稍微加载到服务器上,则会有所帮助。
如果您找到例如您的8GB服务器仅使用512MB内存,您可以为其保留一些额外的空间,例如750MB或1GB。剩下的7GB可用空间除以您的应用程序内存使用量。 10MB/7GB
= 700
个线程/子代。