Disable Sentry profiling for Epure
Zero profiles sample rate. Epure has no profiling product.
On this pageShowHide
- Ordered debug checklist
- Runnable JS
- Runnable Python
- Runnable Java
- Prerequisites
- Concrete failure: proxy still sees profiles
- Failure modes (checklist outcomes)
- Variety note
- Continuous profiling extras
- Load test footnote
- Node vs Python vs Java quick pins
- Why profiling defaults sneak back
- Verify after the checklist
- Questions
Profiling answers which functions burned CPU. Epure has no profiling product. Profile envelope items are discarded. Set profile sample rates to 0 so processes stop collecting. Keep exceptions flowing with the same official Sentry SDK and DSN.
Ordered debug checklist
rg -n "profilesSampleRate|profiles_sample_rate|ProfilesSampleRate|profile_session_sample_rate" -S- Open every hit. Set the value to
0or0.0inside the sameSentry.init/sentry_sdk.initthat already has your DSN. - Remove continuous profiling integrations or side-effect imports if your SDK added them for a suite host (for example a profiling integration registered next to
Sentry.init). - Restart web and workers. Confirm boot logs no longer mention a profiler starting.
- Send one
captureException. Expect HTTP 202 and an Issues row. ConfirmGET /healthis{"status":"ok"}first. - If a reverse proxy still shows profile content types, you missed an entrypoint. Return to step 1 with a wider path (containers, lambdas, cron, old task definitions).
- If you dual-send to Sentry Cloud, run the same grep against that DSN's init. Zeroing Epure alone will not stop a Cloud profiling line item.
Runnable JS
import * as Sentry from "@sentry/node";Sentry.init({ dsn: process.env.SENTRY_DSN, tracesSampleRate: 0, profilesSampleRate: 0 });
Pin @sentry/node@7.120.0 when matching this site's CI. Do not construct a custom NodeClient just to flip profiling off.
Runnable Python
import sentry_sdksentry_sdk.init(dsn=dsn, traces_sample_rate=0.0, profiles_sample_rate=0.0)
Runnable Java
Sentry.init(options -> {options.setDsn(System.getenv("SENTRY_DSN"));options.setTracesSampleRate(0.0);options.setProfilesSampleRate(0.0);});
Prerequisites
Same Epure v0.1.5+ note as the tracing guide for public-key auth. JS CI pin 7.120.0. Profiling often couples to tracing in SDKs; zero both if you are not using either job on this host. Envelope keep/drop detail: Envelope.
Concrete failure: proxy still sees profiles
After step 4 looked green, nginx access logs still showed occasional profile uploads from a canary pod on an old image. The checklist failed at step 6. Wider grep found profilesSampleRate: 0.1 in a Helm values file that rebuilt the canary overnight. Fix: zero the values file, roll the canary, re-check proxy logs for one deploy cycle, then send captureException again. Do not treat a quiet web process as proof that every task definition is clean.
Failure modes (checklist outcomes)
- Web clean, worker still profiling - cron/worker entrypoint missed in the grep.
- Proxy shows profile uploads after zero - second service or old task definition still running.
- 202 empty Issues - stop debugging profiling; follow Events not showing.
- You actually needed profiles - keep a suite host. Epure will not grow a profiler to satisfy the checklist.
- Cloud bill still shows profiling - dual-send DSN still sampling; zero that init or drop the soak.
Variety note
Do not restamp this guide with the tracing wrong-then-right pairs or the replay anecdote. Checklist is the locked shape for profiling in this batch.
Continuous profiling extras
Some SDKs add a separate continuous profiling package or integration. Setting profilesSampleRate: 0 in init is necessary but not always sufficient if an import starts a profiler as a side effect. Delete the integration registration. Re-run the grep after the delete. The checklist is ordered so that import cleanup happens before you trust proxy silence.
Load test footnote
Do not use Epure profile discards as a load-test strategy for CPU. If you need profiles, store them somewhere that keeps them. Discarded items are honesty, not a profiler product.
Node vs Python vs Java quick pins
Node: profilesSampleRate: 0 beside tracesSampleRate: 0 in @sentry/node@7.120.0. Python: profiles_sample_rate=0.0 in sentry_sdk.init. Java: options.setProfilesSampleRate(0.0) next to traces. If a language package does not expose a profile rate, skip that key and still remove any profiler integration you added for a suite host. Then verify exceptions. The checklist fails closed: prefer missing a profile key over leaving a profiler import alive.
Why profiling defaults sneak back
Boilerplate generators and old internal wiki snippets enable profiles "for free" next to traces. On a suite host that may be intentional. On Epure it is discarded work and, on dual-send, a metered surprise. Treat profiler enablement as a paid decision. If nobody asked for flamegraphs this quarter, the checklist result should be all zeros.
Verify after the checklist
curl -sS "$EPURE_URL/health"should return{"status":"ok"}.- Trigger
captureExceptionfrom the app you just restarted. - Issues must show the new event. If not, leave this guide and open Events not showing.
Do not keep tuning profile flags to fix an empty Issues list. Mesh: Disable tracing for the coupled traces key; keep checklist shape here.