php-fpm容器livenessProbe with / ping route

时间:2017-12-20 17:35:09

标签: php kubernetes fpm

最近我们遇到了一些问题,我们的php-fpm进程失去控制并导致网站无响应。有一些明显的php-fpm配置工具需要完成,但我也想为php-fpm容器实现一个合理的livenessProbe运行状况检查,它会在探测失败时重启容器。

我已经在如何上挖出几个资源来ping服务器作为健康状况检查(例如https://easyengine.io/tutorials/php/fpm-status-page/),但我还没有找到一个很好的答案。寻找。如果服务器实际上已经死了,/ ping路由会返回除“pong”之外的其他内容吗?它会暂停吗?假设后者,什么是合理的超时限制?

运行我自己的一些测试,我注意到一个健康的php-fpm服务器会快速返回'pong'响应:

# time curl localhost/ping
pong
real    0m0.040s
user    0m0.006s
sys 0m0.001s

我模拟了重负荷,实际上“pong”响应需要1-3秒,这恰好与网站没有反应。基于此,我绘制了一个livenessProbe的草稿,如果活动探针脚本在2个连续探针上花费的时间超过2秒,它将失败并重新启动容器:

livenessProbe:
  exec:
    command:
    - sh
    - -c
    - timeout 2 /var/www/livenessprobe.sh
  initialDelaySeconds: 15
  periodSeconds: 3
  successThreshold: 1
  failureThreshold: 2

探针脚本就是这样(有理由说这需要是一个shell脚本,而不是来自livenessProbe的直接httpGet,我不会进入):

  #!/bin/bash

  curl -s localhost/ping

现在我不知道我是否过于咄咄逼人或过于保守。我将运行一个canary部署来测试这个,但与此同时,我想从其他已经在php-fpm服务器上实施健康检查的人那里获得一些反馈,如果它在Kubernetes环境中则会获得奖励积分。

1 个答案:

答案 0 :(得分:3)

如果仍然有人对此主题感兴趣。我一直在研究某种相同的东西(结合kubernetes中运行的pod进行php-fpm监视)。

我将以下运行状况检查设置https://github.com/renatomefi/php-fpm-healthcheck添加到了我的容器(运行php-fpm的容器)中,以检查php-fpm是否运行良好:)工作非常简单,并完成了工作(将当某些值超出您的预定义限制时,容器为“不良”