关于kubernetes:Kubernetes部署php-应用时候memorylimit的修改

0次阅读

共计 1067 个字符,预计需要花费 3 分钟才能阅读完成。

背景:

根底环境:centos8+kubeadm1.20.5+cilium+hubble 环境搭建,traefik 提供对外服务:Kubernetes 1.20.5 装置 traefik 在腾讯云下的实际。跑了几个根底的 php 服务。根底镜像是参考的 https://github.com/richarvey/nginx-php-fpm 搭建。而后 php 报错:Allowed memory size of 134217728 bytes exhausted (tried to allocate 6291488 bytes) 长期须要调整个参数。不想从新打镜像啊。咋整?

1. 问题复查与解决:

1. 找出引发报错的配置项

首先剖析一下报错:Allowed memory size of 134217728 bytes exhausted (tried to allocate 6291488 bytes)
认真看了一眼下面的数字嗯。限度应该是 128M。php 运行的脚本须要应用 134M 的资源超了?
先进入容器瞄一眼,看看这可能是哪个参数:

php -i 


初步来看是 memory_limit 这个参数限度了 128M

2. 深刻理解配置项参数设置与含意

认真解读了一下 memory_limit 这个参数:
一个 PHP 工作过程即 php-fpm 所可能应用的最大内存?

而后:

两个感觉说的都不是一会事件啊?

参照:https://docs.rackspace.com/support/how-to/php-memory-limit/
先不去纠结它了。反正就先这样了解了:

避免写得不好的脚本吃掉服务器上所有可用的内存

3. 如何批改参数并验证其是否失效

开始 memory_limit 这个参数设置的是 128M 既然不够了,那就先扩一下?
查看了下 dockerfile 这个参数是在 start.sh 启动脚本中将参数设置为 128M 的:

那我当初要么把 start.sh 脚本进行批改?or 我可不可以设置一下环境变量?

尝试了一下批改 yaml 文件并重新部署服务,验证如下:

ok 失效了。环境变量的优先级是大于启动脚本中的变量的?我是否能够这样了解?

复盘:

  1. memory_limit 这个参数如何设置适合的范畴?我感觉我设置为 256M 这个参数略大。
  2. 这个参数设置大后我的并发线程怎么管制 ….。我的这些资源会不会不够?引起各种的解体?先把 我容器的内存先扩充一下呢。

  1. 其实还是感觉是 php 脚本写的太烂吃掉了内存 …… 就绝对比较简单的服务。能吃掉那么多内存也是神了。只能让他们找下问题,优化一下脚本。
  2. 次要是感觉活学活用还的。能用变量的尽量去用变量去做各种配置。防止反复构建根底镜像。
正文完
 0