sentry-java icon indicating copy to clipboard operation
sentry-java copied to clipboard

Performance issue - CPU Hot spot

Open micopiira opened this issue 1 year ago • 15 comments

Integration

sentry-spring-jakarta

Java Version

17

Version

7.8.0

Steps to Reproduce

While profiling some reactive code using project Reactor with automatic context propagation and Sentry, I noticed quite a lot of time is spent instantiating SecureRandom objects as the SentryReactorThreadLocalAccessor.getValue call will always cause a new TracesSampler thus a new SecureRandom object to be created when hub == null || hub instanceof NoOpHub in Sentry#getCurrentHub.

SecureRandom objects are said to be thread-safe by the javadoc, would it be possible/safe to just reuse the same instance? Or reuse the TracesSampler? Or avoid cloning the NoOpHub alltogether..?

Expected Result

Not so much time spent creating SecureRandom objects

Actual Result

Screenshot of profiling results:

Screenshot 2024-06-11 at 21 17 17

micopiira avatar Jun 11 '24 18:06 micopiira