AnyCable Pro
AnyCable Pro aims to bring AnyCable to the next level of efficient resources usage and developer experience happiness.
Not sure which edition you need? See Editions for a comparison of open source, Pro, and AnyCable+.
Read also AnyCable Goes Pro: Fast WebSockets for Ruby, at scale.
Memory usage
Pro version uses a different memory model under the hood, which gives you yet another 30-50% RAM usage reduction.
In the current Node.js WebSocket benchmark, Pro held connections at ~18 KB each versus ~34 KB for the open-source build on the same hardware.
Here is the results of running websocket-bench broadcast and connect benchmarks and measuring RAM used (from an earlier release):
| version | broadcast 5k | connect 10k | connect 15k |
|---|---|---|---|
| 1.3.0-pro | 142MB | 280MB | 351MB |
| 1.3.0-pro (w/o poll)* | 207MB | 343MB | 480MB |
| 1.3.0 | 217MB | 430MB | 613MB |
* AnyCable-Go Pro uses epoll/kqueue to react on incoming messages by default. In most cases, that should work the same way as with non-Pro version; however, if you have a really high rate of incoming messages, you might want to fallback to the actor-per-connection model (you can do this by specifying --netpoll_enabled=false).
NOTE: Currently, using net polling is not compatible with WebSocket per-message compression (it's disabled even if you enabled it explicitly).
More features
- Adaptive RPC concurrency
- Multi-node streams history
- Slow drain mode for disconnecting clients on shutdown
- Binary messaging formats
- Apollo GraphQL protocol support
- Long polling support
- OCPP support
Installation
Read our installation guide.