【发布时间】:2020-06-21 16:41:15
【问题描述】:
背景
我们运行一个处理多个 php/lumen 微服务的 kubernetes 集群。我们开始看到应用程序 php-fpm/nginx 在其日志中报告 499 状态代码,这似乎与客户端在应用程序日志 499 时收到空白响应(curl 返回 curl: (52) Empty reply from server)相对应。
10.10.x.x - - [09/Mar/2020:18:26:46 +0000] "POST /some/path/ HTTP/1.1" 499 0 "-" "curl/7.65.3"
我的理解是,当客户端套接字不再打开/无法返回内容时,nginx 会返回 499 代码。在这种情况下,这似乎意味着在 nginx/应用程序层终止此连接之前。我们目前的配置是:
ELB -> k8s nginx 入口 -> 应用程序
所以我的想法是 ELB 或入口,因为应用程序是没有套接字可以返回的应用程序。所以我开始点击入口日志......
潜在的核心问题?
在查看入口日志时,我看到了其中不少:
2020/03/06 17:40:01 [crit] 11006#11006: ngx_slab_alloc() failed: no memory in vhost_traffic_status_zone "vhost_traffic_status"
可能的解决方案
我想如果我给 vhost_traffic_status_zone 更多内存,至少该错误会消失并继续查找下一个错误。但我似乎找不到任何可以让我控制它的 configmap 值或注释。我检查了文档:
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/
提前感谢我可能遗漏的任何见解/建议/文档!
【问题讨论】:
-
你见过this comment吗?
-
所以这肯定会遇到同样的问题,但我无法直接访问 nginx conf,而是创建 k8s nginx 入口对象的掌舵图——所以我可以控制入口的注释,并控制入口命名空间的配置映射值。根据问题,我没有看到任何允许我控制链接提到的相同 nginx 配置选项的注释/配置映射。但我真的希望有一个!
-
您使用的是哪个版本的控制器?
标签: nginx kubernetes kubernetes-ingress