Skip to content

Events are delayed for new and (or) long running connections #174

@mcferden

Description

@mcferden

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions