Skip to content

Add Rails comparison: Action Cable / Solid Cable / AsyncCable / AnyCable#2

Open
irinanazarova wants to merge 1 commit into
add-socketioxidefrom
rails-comparison
Open

Add Rails comparison: Action Cable / Solid Cable / AsyncCable / AnyCable#2
irinanazarova wants to merge 1 commit into
add-socketioxidefrom
rails-comparison

Conversation

@irinanazarova

Copy link
Copy Markdown
Collaborator

Target apps, harness changes, and results for the Rails WebSocket adapter comparison behind anycable.io/compare/rails-actioncable.

Stacked on add-socketioxide. Based on that branch (not main) because the Rails work builds on the same harness files the socketioxide branch touches (README.md, backend/src/bench/tests-manifest.ts), so it conflicts when applied directly to main. Retarget to main once socketioxide merges.

Target apps

  • cable-bench/ — Rails 8.1 app; BENCH_MODE selects Action Cable (Redis) or Solid Cable (database). Also serves as the AnyCable gRPC RPC backend.
  • cable-bench-falcon/ — the same app booted on Falcon via actioncable-next + async-cable (the AsyncCable target).

Harness

  • idle-multi.ts: forward CHANNEL/AC_PROTOCOL and send the bench-runner auth token, so idle/capacity runs can target a real Rails channel
  • jitter-multi.ts: forward CHANNEL + AC_PROTOCOL for Rails targets
  • idle-runner.ts / jitter-runners.ts / server.ts: channel + acProtocol params
  • tests-manifest.ts: Rails latency/jitter/idle/avalanche/capacity specs

Results (sharded, one shared-tenant Railway window)

  • backend/results/rails-sharded-2026-06-28.json — latency, jitter, 10K, idle, avalanche
  • backend/results/rails-capacity-break-2026-06-28.json — idle-to-break per adapter (AnyCable held 600K with 0 failures)

Deep dive in docs/rails-comparison.md; summary section in README.md.

Target apps and harness for the Rails WebSocket adapter comparison behind
anycable.io/compare/rails-actioncable.

Targets:
- cable-bench/         Rails 8.1 app, BENCH_MODE selects Action Cable (Redis)
                       or Solid Cable (database); also the AnyCable RPC backend
- cable-bench-falcon/  same app booted on Falcon via actioncable-next +
                       async-cable (the AsyncCable target)

Harness:
- idle-multi.ts: forward CHANNEL/AC_PROTOCOL and send the bench-runner auth
  token, so idle/capacity runs can target a real Rails channel
- jitter-multi.ts: forward CHANNEL + AC_PROTOCOL for Rails targets
- idle-runner.ts / jitter-runners.ts / server.ts: channel + acProtocol params
- tests-manifest.ts: Rails latency/jitter/idle/avalanche/capacity specs

Results (sharded, one shared-tenant Railway window):
- backend/results/rails-sharded-2026-06-28.json   latency/jitter/10K/idle/avalanche
- backend/results/rails-capacity-break-2026-06-28.json  idle-to-break per adapter

Deep dive in docs/rails-comparison.md; summary in README.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant