A drop in simultaneous requests per seconds with Bun when Sentry is active
Is there an existing issue for this?
- [X] I have checked for existing issues https://github.com/getsentry/sentry-javascript/issues
- [X] I have reviewed the documentation https://docs.sentry.io/
- [X] I am using the latest SDK release https://github.com/getsentry/sentry-javascript/releases
How do you use Sentry?
Sentry Saas (sentry.io)
Which SDK are you using?
@sentry/browser
SDK Version
8.10.0
Framework Version
Bun 1.1.14
Link to Sentry event
No response
SDK Setup
import { init } from "@sentry/bun";
init({
dsn: process.env.SENTRY_DSN
});
Steps to Reproduce
- Compile your app and launch a stress test (bombardier 100 concurrent, 1 million requests) on a simple route
[https://github.com/codesenberg/bombardier](Bombardier link)
Command:
bombardier -c 100 -n 1000000 http://localhost:8080/stress - Put your dsn in the Sentry.init as undefined
- Recompile your app and relaunch the same stress test
FYI: I just convert my Typescript Express APP CJS into a fully ESM Express app, builded with esbuild and powered by Bun. After that, i wanted to check the effective gain of this conversion with some stress test.
In my CJS Node app, there's a small difference with or without Sentry: Average of 18190.75 requests seconds with Sentry Average of 19211.16 requests seconds without
In node i was using the 8.8.0 version of @sentry/node.
Expected Result
Approximatively the same requests/seconds
Actual Result
~54 % less requests/seconds
@riepspellz if you add skipOpenTelemetrySetup: true to your Sentry.init call do you see similar performance problems?
If you use @sentry/node instead of @sentry/bun (top-level API should be identical), do you see similar performance issues?
@riepspellz if you add
skipOpenTelemetrySetup: trueto yourSentry.initcall do you see similar performance problems?If you use
@sentry/nodeinstead of@sentry/bun(top-level API should be identical), do you see similar performance issues?
Hello @AbhiPrasad ,
It seems to work !
Passing to @sentry/node makes me go to 47426.66 requests per seconds instead of 31048 requests per seconds. Same result with or without skipOpenTelemetrySetup: true
In the other hand, if keep @sentry/bun and i put skipOpenTelemetrySetup: true, the init function doesn't recognise it (TS interface not implemented yet ?), but it improve the results, from 31048 requests per seconds to 38775.97 requests per seconds.
For now, i will use @sentry/node, thanks for the tip !
okay so this is something with our Bun instrumentation then!
I'm going to backlog this, but any kind of profile of a request with the Bun SDK active would be a big help in us understanding the performance differences!
Closing this due to inactivity. If we get a memory profile we can take another look.