At the moment, the inactivity timeout defines when a bi-directional streaming invocation w/o activity is suspended. The current default value is 60s. The idea is to keep the invocation running in case that a completion arrives that enables the invocation for make further progress. This works fine as long as the invoker has enough capacity to invoke other invocations. If, however, the concurrency limit is set and the system is under load it might also lead to a slow down of invocation processing. See #2758 (comment) for more details.
Under load there is the tension between keeping an invocation running and occupying the slot for making faster progress once a completion arrives vs. freeing its slot and letting waiting invocations make progress. One idea to avoid occupying slots w/o making progress is to suspend in-flight invocations whenever a new invocations arrives that does not get a free slot.
At the moment, the inactivity timeout defines when a bi-directional streaming invocation w/o activity is suspended. The current default value is 60s. The idea is to keep the invocation running in case that a completion arrives that enables the invocation for make further progress. This works fine as long as the invoker has enough capacity to invoke other invocations. If, however, the concurrency limit is set and the system is under load it might also lead to a slow down of invocation processing. See #2758 (comment) for more details.
Under load there is the tension between keeping an invocation running and occupying the slot for making faster progress once a completion arrives vs. freeing its slot and letting waiting invocations make progress. One idea to avoid occupying slots w/o making progress is to suspend in-flight invocations whenever a new invocations arrives that does not get a free slot.