【发布时间】:2023-03-14 00:36:01
【问题描述】:
出于扩展的原因,我最近将我的应用程序从带有 docker 的单个服务器迁移到了 Google Kubernetes Engine。我是 Kubernetes 平台的新手,我可能还没有完全理解它的概念,但我确实掌握了基础知识。
我已成功将我的应用程序迁移到 cluster size of 3 each with 1vCPU and 3.75 GB RAM
现在我发现了在 kubernetes 集群中运行的 php-fpm 进程的最佳配置是什么。我已经阅读了一些关于如何设置 php-fpm 进程的文章,例如
https://serversforhackers.com/c/php-fpm-process-management
在我的集群上,我有一个 Elasticsearch、Redis、前端和一个 REST Api,并且我对 kubernetes 的理解,每个都有自己的 pod 在我的集群上运行,我尝试访问 REST Api 的 pod 并看到 1 个 vCPU 和 3.75 GB RAM,这是我在集群规格中设置的。而且内存只剩下 1.75GB,所以我认为还有其他服务或 pod 正在使用内存。
所以现在我想根据我上面分享的文章增加以下的大小。
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 4
pm.max_spare_servers = 8
但我的问题是,由于 pod 位于工作人员身上,如果我根据剩余的可用内存更改配置(基于我在上面分享的关于计算 pm.max_children 的文章),我最终可能会导致 pod 消耗所有内存空间离开了,将无法分配给其他服务。我的问题有意义吗?还是有我想念的想法?
基于这篇文章,因为我的工作人员有 3.75 GB RAM,而其他服务已经消耗 1.5GB 内存,所以我的最佳目标是 1 GB RAM。
pm.max_children 将我们带到 1024 Mb / 60 Mb = 17 max_children
pm.max_children = 17
pm.start_servers = 8
pm.min_spare_servers = 7
pm.max_spare_servers = 10
pm.max_requests = 500
当有其他服务或 pod 共享相同的资源时,这让我想到了如何计算 Kubernetes 集群上的 php-fpm 子进程的问题。
感谢您阅读到最后,并提前感谢您的投入。
【问题讨论】:
标签: php docker kubernetes google-cloud-platform google-kubernetes-engine