performance: possible degradation after a lot of releases
@andrew-statsenko proposed to verify the following case against possible performance degradation.
- 1000 puts;
- 100 take+ack;
- 900 take+release;
- Repeat from 1.
@LeonidVas AFAIR, you tried to reproduce it, but without lack. Can you share your approach (maybe scripts, workload sizes) and results?
From @andrew-statsenko:
...наш кейс:
— в очередь (стоковый tarantool/queue, master) с постоянной скоростью ставятся (put) новые задачи с примерной скоростью 300-500 rps в зависимости от текущей нагрузки. — обработчики очереди, go client, 1024 goroutines, поднимают (take) задачи, их обрабатываются и делают им ack.
В силу некоторых ограничений дальнейшей цепи обработки поставленных задач мы не процессим более 10 rps от одного пользователя и при превышении этого лимита задачи возвращаются обратно в очередь (release with delay). Периодически случаются ситуации, когда очередь «забивается» задачами от одного пользователя и доля задач, которым обработчик делает relase with delay может достигать 50-70-90% на очередь. В это время наблюдается сильная деградация скорости обработки очереди — скорость take’а задач падает более, чем на порядок.
@LeonidVas AFAIR, you tried to reproduce it, but without lack. Can you share your approach (maybe scripts, workload sizes) and results?
I don't tried to reproduce it.