I have a collection of grpc microservices running in kubernetes, using ESPv2 as a proxy in front of them to route different grpc services to different bakcend components. One of those grpc services has a method that stream responses. The stream is intended to be long-lived, sending updates to a mobile app. However, after about 120 seconds, the stream gets terminated with a RST_STREAM (grpcurl unhelpfully reports an error code of NO_ERROR). I'm pretty sure the culprit is a timeout in ESPv2/Envoy.
So now I'm trying to change the stream_idle_timeout setting in the http connection manager for the listener, but there doesn't seem to be a way to do that.
I tried --stream_idle_timeout, but that results in setting a route idle_timeout (which according to envoy docs is roughly equivalent) in a subset of the routes in the resulting dynamic config. Even though the timeout gets set, the 120-second limit persists.
I tried setting the deadline on the backend rules in my service.json file, which resulted in route idle_timeouts in a different subset of the routes in the dynamic config. It also doesn't affect the 120-second limit.
I tried using --envoy_extra_config_yaml in the ESPv2_ARGS environment variable, but I haven't been able to successfully use that to change the config (validation errors on startup).
What is the best way to manually override the stream_idle_timeout setting. If there isn't an easy way to do that, could a command-line option be added?
I have a collection of grpc microservices running in kubernetes, using ESPv2 as a proxy in front of them to route different grpc services to different bakcend components. One of those grpc services has a method that stream responses. The stream is intended to be long-lived, sending updates to a mobile app. However, after about 120 seconds, the stream gets terminated with a RST_STREAM (grpcurl unhelpfully reports an error code of NO_ERROR). I'm pretty sure the culprit is a timeout in ESPv2/Envoy.
So now I'm trying to change the
stream_idle_timeoutsetting in the http connection manager for the listener, but there doesn't seem to be a way to do that.I tried --stream_idle_timeout, but that results in setting a route idle_timeout (which according to envoy docs is roughly equivalent) in a subset of the routes in the resulting dynamic config. Even though the timeout gets set, the 120-second limit persists.
I tried setting the
deadlineon the backend rules in myservice.jsonfile, which resulted in route idle_timeouts in a different subset of the routes in the dynamic config. It also doesn't affect the 120-second limit.I tried using
--envoy_extra_config_yamlin the ESPv2_ARGS environment variable, but I haven't been able to successfully use that to change the config (validation errors on startup).What is the best way to manually override the
stream_idle_timeoutsetting. If there isn't an easy way to do that, could a command-line option be added?