Назад | Перейти на главную страницу

ответ восходящего потока буферизуется во временный файл / 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. Я не знаю причины этой проблемы и не могу ее воспроизвести. Как мне решить эту проблему? Заранее спасибо.

ОБНОВИТЬ:

Я провожу нагрузочное тестирование API с помощью jmeter, вот ошибка от jmeter:

Как видите, API должен работать нормально, и я обработал каждое исключение внутри isLogin API. Поэтому я не думаю, что это ошибка моего приложения. Думаю, это связано с инфраструктурой.

Но я не знаю, поддерживает ли это GKE?

В Ingress-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 будет назначен внешний 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
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 могут сосуществовать, вам разрешено иметь несколько входных объектов, обрабатываемых обоими входами.

Дайте мне знать в комментариях, если у вас возникнут вопросы.