Open linux019 opened 5 months ago
@linux019 - what library for goroutines pools are you proposing?
@zhongshixi has offered to provide a pointer to a potential solution.
@bsardo will coordinate a decision.
I had to put an RPS limit on the load balancer.
IMHO its good practice to use backpressure limiting layers in front of Prebid Server. This is the approach we use to avoid the situation described here.
I have no issue adding a goroutine limiting feature to PBS provided it doesn't add latency when unused due to either disabled (if we want to provide that option) or using a high limit value.
I think this is more about reducing the compute spent on mcall at normal usage.
Being able to deal better with traffic spikes would be a side effect.
There should be no need to add a library for this.
@bretg we don't need third party library, many of them are over complicated. There is a good implementation https://github.com/panjf2000/ants it can be taken as example
we use https://github.com/panjf2000/ants
it works very well in our system since it preallocate the resources for go routines you need. Some improvement we did
On high RPS to
/openrtb2/auction
endpoint PBS spawns more and more goroutines. To handle the huge amount of traffic I had to put an RPS limit on the load balancer. During normal work of PBS amount of goroutines is ~5KPBS spaws a goroutine: