读取上游时,上游响应缓冲到临时文件 /var/cache/nginx/proxy_temp/0/01/0000000010

读取上游时,上游响应缓冲到临时文件 /var/cache/nginx/proxy_temp/0/01/0000000010

我正在使用 Google Kubernetes Engine,从 stackdriver 日志中收到此错误

2020/05/14 07:31:19 [警告] 9#9:*658 读取上游时,上游响应缓冲到临时文件 /var/cache/nginx/proxy_temp/0/01/0000000010,客户端:155.201.35.107,服务器:,请求:“POST /graphql?key=AIzaSyCkP6djTqVJ5E9lUWcOlWYxpJw7zJuU9dQ HTTP/1.1”,上游:“http://127.0.0.1:4000/graphql?key=AIzaSyCkP6djTqVJ5E9lUWcOlWYxpJw7zJuU9dQ“, 主持人:...

我读过这篇文章:上游响应被缓冲到临时文件中

但它与 nginx 有关,与 GKE 无关。我知道 GKE 可能使用 Nginx 作为代理服务器。

我还发现了这个文档:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#proxy-max-temp-file-size

但我不知道 GKE 是否支持它。我不知道这个问题的原因,也无法重现它。我该如何解决这个问题?提前谢谢。

更新:

我正在使用 jmeter 进行 API 负载测试,以下是来自 jmeter 的错误:

在此处输入图片描述

如您所见,API 应该可以正常工作,并且我已经处理了isLoginAPI 内部的每个异常。因此,我认为此错误不是来自我的应用程序。我猜这与基础设施有关。

答案1

但我不知道 GKE 是否支持它?

入口-gce文档中没有提到此功能,但我知道您可以将 NGINX Ingress 与 GKE 一起使用并使用其注释来更改proxy-max-temp-file-size

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/cloud/deploy.yaml
  • 等到 Nginx Ingress Controller 被分配一个外部 IP:
$ kubectl get svc ingress-nginx-controller -n ingress-nginx
NAME                       TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)                      AGE
ingress-nginx-controller   LoadBalancer   10.21.3.21   XX.XX.XXX.XXX   80:31269/TCP,443:30522/TCP   84m
  • 配置您的使用 NGINX Ingress Controller 的 Ingress 资源通过增加:
    • annotations: kubernetes.io/ingress.class: nginx,否则它将使用默认的 gce ingress 类。
  • 并将其proxy-max-temp-file-size设置为零以拒绝创建临时文件,这是您的 Ingress 对象的模型:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: <INGRESS_NAME>
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/proxy-max-temp-file-size: "0"
spec:
  rules:
  - host: <FQDN>
    http:
      paths:
      -  backend:
           serviceName: <SERVICE_NAME>
           servicePort: <PORT>

ingress.class: nginx是将 Ingress 对象分配给 Nginx Ingress 的关键。请注意,GCE 和 NGINX Ingress 可以共存,您可以让两个 Ingress 处理多个 Ingress 对象。

如果您有任何问题,请在评论中告诉我。

相关内容