php-pfm并发,php-fpm在kubernetes中的资源分配考虑

虚拟机运行php应用的时候,多个php应用共享虚拟机上同一套php-fpm进程池,很难(也不需要)评估单个应用的资源占用情况。

当php应用迁入到kubernetes之后,就被迫要开始精细化硬件资源分配,在保证服务质量的前提下提升集群资源利用率,这是个很有意思的问题。

经验迁移

在虚拟机时代,我们在8核机型运行了1000个FPM,可以保障足够的并发处理能力。

简单折算并约定单个POD采用1核100个FPM进程,运行一段时间后,观察内存实测占用不到2G。

如果性能不足则通过增加POD解决。

存在的问题

在实际运行中,我们发现部分应用存在一个典型的问题,这是在实施HPA弹性伸缩的过程中遇到的。

当HPA检测到POD的平均CPU利用率低于阈值时就会开始缩容,这时引发了服务超时。

经过分析发现,这类应用的并发较高,但是计算量较小,表现就是POD的CPU不高,但是PHP-FPM的活跃进程数较高。

我们通过prometheus采集POD内php-pfm的活跃进程数量,观察到100个FPM进程在没有缩容之前就已经有可能高达50-60个活跃进程数,当HPA触发缩容大约一半POD之后PHP-FPM进程数量就不够用了。

解决思路

一方面,我们需要做好PHP-FPM的prometheus监控与grafana展现,以便更高效的追溯问题。

另一方面,我们需要考虑使用V2 beta版本的HPA功能,结合对PHP-FPM的活跃进程数的自定义metrics以及CPU监控,实现更加安全的HPA。

最后,我们需要对应用进行精细化配置,对于IO类型应用应该降低单个POD的CPU配额以提升集群CPU利用率。

如果文章帮助了你,请帮我点击1次谷歌广告,或者微信赞助1元钱,感谢!

c68972f84f7c4f47f59a1f69f0608e10.png

知识星球有更多干货内容,对我认可欢迎加入:

6c9a48ad74e3675cedd6ca98c1fd0a1f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值