Php 在DigitalOcean Kubernetes上运行Laravel时遇到随机偶发的504次超时
我正在DigitalOcean kubernetes集群上运行一个Laravel应用程序。该应用程序由三个运行在三个群集节点之一上的三个POD组成,其流量通过Php 在DigitalOcean Kubernetes上运行Laravel时遇到随机偶发的504次超时,php,laravel,networking,kubernetes,kubernetes-ingress,Php,Laravel,Networking,Kubernetes,Kubernetes Ingress,我正在DigitalOcean kubernetes集群上运行一个Laravel应用程序。该应用程序由三个运行在三个群集节点之一上的三个POD组成,其流量通过nginx-ingres和DigitalOcean负载平衡器路由到该应用程序。该应用程序使用DigitalOcean管理的数据库作为后端,我使用Grafana/Prometheus进行监视和日志整理 每个应用程序吊舱由三个容器组成: Laravel应用程序(PHP-FPM和Nginx sidecar)-我知道将多个服务组合在一个pod中是一
nginx-ingres
和DigitalOcean负载平衡器路由到该应用程序。该应用程序使用DigitalOcean管理的数据库作为后端,我使用Grafana/Prometheus进行监视和日志整理
每个应用程序吊舱由三个容器组成:
nginx
和fpm
容器使用共享卷访问代码库,我遇到了一些主要的性能问题。由于文件必须从Docker映像复制到共享卷,因此POD需要几分钟的时间才能启动。(如果有人对此有更好的解决方案,那么我洗耳恭听!).yaml
文件如下所示:
入口:
apiVersion:networking.k8s.io/v1beta1
种类:入口
元数据:
名称:{{模板“app.fullname”。}}
标签:
应用程序:{{模板“app.name”。}
图表:{{模板“app.chart”}
释放:{{.release.Name}
传统:{{.Release.Service}
注释:
kubernetes.io/ingres.class:nginx
nginx.ingres.kubernetes.io/proxy-body-size:“50m”
规格:
tls:
-主持人:
-[REDACTED].com
secretName:app tls
规则:
-主机:{{.Values.ingres.host}
http:
路径:
-路径:{{.Values.ingres.path}
后端:
serviceName:{{模板“app.fullname”。}
servicePort:http
服务
apiVersion:v1
种类:服务
元数据:
名称:{{模板“app.fullname”。}}
标签:
应用程序:{{模板“app.name”。}
图表:{{模板“app.chart”}
释放:{{.release.Name}
传统:{{.Release.Service}
规格:
类型:集群
端口:
-港口:80
目标港:80
协议:TCP
名称:http
-港口:9253
目标港:9253
协议:TCP
名称:fpmmetrics
-港口:9113
目标港:9113
协议:TCP
名称:nginxmetrics
选择器:
应用程序:{{模板“app.name”。}
释放:{{.release.Name}
通过上面的配置,我可以通过公共主机名访问该站点。绝大多数情况下,网站的表现与预期相符,但如果我将其保留足够长的时间,大约十分之一的请求从未解决,并返回504
。如果我在返回504
之前启动刷新,页面很可能会立即加载
我知道我没有给任何人提供足够的细节来诊断这个问题,但是我不知道从哪里开始调试这个问题。我检查了日志,没有发现异常,当站点确实加载时,它会按预期执行,这让我相信这是一个入口/网络问题
这是我的入口控制器的统计数据,显示了.99
和偶尔出现的504
的缓慢响应时间
我该如何开始诊断呢
如前所述,您是否尝试在k8s入口中指定代理读取、发送和连接超时注释?另外,你可以看看这篇关于stackoverflow的文章,找不到任何关于digital ocean的特定内容。你有没有像前面提到的那样在k8s入口中指定代理读取、发送和连接超时注释?另外,你可以看看这篇关于stackoverflow的文章,找不到任何关于digital ocean的具体内容。