нагрузочном тестировании сервиса asr на gRPC: status = StatusCode.UNAVAILABLE details = "Received http2 header with status: 504".
Схема такая: клиент -> nginx -> grpc.
На grpc ошибку не выводит, nginx пишет, что время сессии закончилось, таимаут (23735 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 172.22.0.4, server: , request: "POST /SpeechToTextService/StreamingRecognize HTTP/2.0").
Как это можно исправить при балансировке через nginx? Если напрямую, без nginx отправлять запросы - все хорошо.
Увеличение таимаута только до поры до времени помогает. Ошибка в том, что сессии не восстанавливается...
Отсюда ещё вопрос: как восстанавливать сессии на nginx или по-умному для grpc закрывать и снова открывать?
Конфиг (с 1 инстансом сервиса stt пробовал, как тут - ошибка та же):
#nginx version: nginx/1.19.10
http {
fastcgi_read_timeout 300;
proxy_read_timeout 300;
uwsgi_read_timeout 300;
grpc_read_timeout 300;
}
server {
listen 8558 http2;
charset utf-8;
location / {
grpc_pass grpc://stt:8119;
}
}
трафик сдампи в момент затыка. лучше - секунд за 5 до начала
Обсуждают сегодня