Skip to content

perf: backpressure-aware export streaming memory benchmark#971

Open
codenerde wants to merge 3 commits into
Disciplr-Org:mainfrom
codenerde:perf/export-stream-backpressure
Open

perf: backpressure-aware export streaming memory benchmark#971
codenerde wants to merge 3 commits into
Disciplr-Org:mainfrom
codenerde:perf/export-stream-backpressure

Conversation

@codenerde

Copy link
Copy Markdown

Summary

Adds a streaming benchmark asserting bounded memory under backpressure and measuring throughput across chunk sizes for the NDJSON/gzip export pipeline.

Changes

  • EXPORT_STREAM_CONFIG in src/services/exportQueue.ts: 512KB chunk size, 512MB memory ceiling, 10 RPS slow consumer rate
  • Benchmark suite in src/tests/performance/exportStream.perf.test.ts: slow consumer memory ceiling, throughput across chunk sizes, NDJSON/gzip framing validation, abort mid-stream
  • Documentation in docs/exports.md: streaming backpressure architecture with optimal chunk size rationale

Verification

  • Simulates slow consumer (10-100 RPS) and asserts peak memory stays below 512MB
  • Measures throughput across 4 chunk sizes (64KB–1MB) and 3 data sizes
  • Verifies gzip and NDJSON framing remain correct under chunking
  • Tests abort mid-stream with memory bound check

Related

Closes #756

Adds a streaming benchmark asserting bounded memory under backpressure and measuring throughput across chunk sizes. Includes memory ceiling validation, NDJSON/gzip framing verification, and documented optimal 512KB chunk size.

Key changes:
- Added EXPORT_STREAM_CONFIG with 512KB chunk size, 512MB memory ceiling, 10 RPS slow consumer rate
- Created comprehensive benchmark test suite in src/tests/performance/exportStream.perf.test.ts
- Updated docs/exports.md with performance architecture documentation
- Verifies gzip and NDJSON framing remain correct under chunking
- Tests slow consumer memory ceiling, large datasets, and abort mid-stream scenarios
@drips-wave

drips-wave Bot commented Jul 3, 2026

Copy link
Copy Markdown

@codenerde Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

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.

Add a backpressure-aware export streaming chunk-size and memory-ceiling benchmark in src/tests/performance/exportStream.perf.test.ts

1 participant