出于扩展的原因,我最近将我的应用程序从带有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在我的集群上运行,我试图访问pod的REST Api并看到1个vCPU和3.75 GB RAM是我在我的集群规范上设置的.RAM只剩下1.75GB,所以我认为还有其他服务或pod使用内存.
所以现在我想根据我上面分享的文章增加以下内容的大小.
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 4
pm.max_spare_servers = 8
Run Code Online (Sandbox Code Playgroud)
但我的问题是,因为pod是在一个worker上,如果我在剩余的可用内存上改变配置基础(根据我上面在计算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
Run Code Online (Sandbox Code Playgroud)
这引出了一个问题:当有其他服务或pod共享相同的资源时,如何计算Kubernetes集群上的php-fpm子进程.
感谢您阅读,直到最后,并提前感谢您的意见.
php docker google-cloud-platform kubernetes google-kubernetes-engine