-
Notifications
You must be signed in to change notification settings - Fork 95
Description
I have the following setup:
- Django app running in WSGI mode
- Multiple Celery workers sending events
- Pushpin (official Docker image with standard configuration, except disabled rate limit)
- Nginx in front of both Django and Pushpin
- Pushpin is only proxying requests to
/events/route
When the number of active connections to events endpoint becomes sufficiently large (~2000), all new connections start to receive events only after some time (from couple of seconds to minutes), and it's also true for already active connections which haven't received events for some time. However, Pushpin's logs show that Pushpin is receiving those events and has active subscribers.
What I've noticed is every time new connections to /events/ endpoint are created, Pushpin sends a request to backend with some JWT, and also send the same requests for each running connection with some fixed interval. And as far as I can see, subscriber will not receive any events, until such request finishes for this connection. With large enough number of connection Pushpin creates constant stream of requests which are blocking eachother, causing interruptions in event delivery.
So my question: is it expected Pushpin's behaviour, or there is some missconfiguration causing this effect?