Я использую 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
$ 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
annotations: kubernetes.io/ingress.class: nginx
, иначе он будет использовать класс входящего трафика gce по умолчанию.proxy-max-temp-file-size
установить на ноль, чтобы запретить создание временных файлов, вот модель вашего Ingress Object: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 могут сосуществовать, вам разрешено иметь несколько входных объектов, обрабатываемых обоими входами.
Дайте мне знать в комментариях, если у вас возникнут вопросы.