【问题标题】:How to compute for php-fpm child process on a Kubernetes Cluster如何计算 Kubernetes 集群上的 php-fpm 子进程
【发布时间】: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

https://www.kinamo.be/en/support/faq/determining-the-correct-number-of-child-processes-for-php-fpm-on-nginx

在我的集群上,我有一个 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


    【解决方案1】:

    GKE 带有多个系统 pod(例如 kube-DNS 和 fluentd)。其中一些 Pod 的扩展性不大,这意味着如果您添加额外的节点,它们将拥有更多可用资源。

    节点也在运行一个操作系统,因此一些内存被分配给它。 您还可以使用kubectl describe no | grep Allocatable -A 5查看每个节点的可用资源

    这将显示节点消耗后剩余的资源量。 使用 kubectl describe no | grep Allocated -A 5 可以查看当前 pod 已请求的内存和 CPU 量。

    话虽如此,您应该根据需要选择子进程的数量。知道 pod 需要的内存量后,将 resource requests and limits 设置为您的 pod 配置,以便 kubernetes 调度程序可以将 php-fpm 放置在具有足够资源的节点上。

    Kubernetes 的优势在于你告诉它你想要什么,它会努力实现它。与其过分担心可以容纳多少,不如根据您的预期/所需性能为您的 pod 选择一个数量,并告诉 kubernetes 您需要多少内存。这样,您也可以increase the number of pods using HPA,而不是管理和扩大子进程的数量。

    【讨论】:

      猜你喜欢
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      相关资源
      最近更新 更多