Comments (1)
Hey @Shahor!
As far as I understand it, this package could not be the issue as it will only tackle those 500 messages sent to the node instance from Redis. Those messages will be accumulated in an AsyncIterable and then read and executed by the subscriptions server.
In order to be sure I'd have to dig in on your repo. Is there any more information that you've discovered since opening the issue?
Regardless, I suspect that the problem you are facing is inherent with how subscriptions-transport-ws
reads each event from the AsyncIterable and the limitations of a single node process while sending information over a web socket.
As you can see here https://github.com/apollographql/subscriptions-transport-ws/blob/master/src/server.ts#L373 the server uses forAwaitEach
which will wait for the next event to be pushed into the iterable.
Basically, in your scenario, you've created 300 subscribers that are waiting to get a new message.
When the first message arrives, the server will start formatting and pushing those messages down each of the 300 open channels and while those are not synchronous work, it will choke the event loop quite easily.
These kinds of issues are actually the reason why I've created this library, to allow for horizontal scaling on the servers doing the execution work.
The thing that does not make sense and could definitely be an issue, is that you saying that the filter returns false and still it does not decrease the amount of work the server deals with... Unless the whole pressure does not come from there.
I'll try running the thing myself and see if I arrive at any conclusion but thanks for raising that up.
from graphql-redis-subscriptions.
Related Issues (20)
- Update ioredis HOT 1
- pub/sub type safety improvements
- Ability to dynamically add/remove topics to/from asyncIterator
- Fail to startup with IOREDIS v5.0.5 HOT 1
- When filtering on subscriptions, parameters are always undefined HOT 1
- ID of the payload returned by the subscription is always null | undefined HOT 1
- Getting Type 'Redis' is not assignable to type 'RedisClient' on v2.5.0 HOT 2
- issue with Redis , no construct
- Node Redis Support HOT 2
- pubsub.asyncIterator should return an AsyncIterable
- TS2322: Type 'Redis' is not assignable to type 'RedisClient'. HOT 6
- Support sharded pub/sub
- Error: Connection is closed. with pubsub HOT 1
- Race condition with simultaneous subscribe + quick unsubscribe HOT 9
- Please update Readme.md with required redis ACL perms for cluster HOT 1
- Callback when connection is closed?
- graphql-redis-subscriptions version 2.6.0 is not working with Node 16.0.0 HOT 1
- inside docker graphql-redis-subscriptions searches to connect to localhost HOT 2
- Simple example not working with ioredis 5 due to mismatched types HOT 1
- Weird bug since 2.6.1 HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from graphql-redis-subscriptions.