Фон
Мы запускаем кластер kubernetes, который обрабатывает несколько микроуслуг php / lumen. Мы начали видеть приложение php -fpm / nginx, сообщающее 499 кодов состояния в своих журналах, и это похоже на то, что клиент получает пустой ответ (curl возвращает curl: (52) Empty reply from server
), в то время как приложения регистрируют 499.
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 / application завершит соединение. В настоящее время наша конфигурация:
ELB -> k8s nginx ingress -> application
Так что я думаю, что это либо 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 еще немного памяти, по крайней мере, эта ошибка могла бы go исчезнуть и перейти к поиску следующей ошибки ... но я могу Похоже, что не найти какое-либо значение configmap или аннотации, которые позволили бы мне контролировать это. Я проверил документы:
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/
Заранее благодарим за любые идеи / предложения / документация, которые я мог бы пропустить!