Epure
Guide

Disable Sentry profiling for Epure

Zero profiles sample rate. Epure has no profiling product.

On this pageShow
  1. Ordered debug checklist
  2. Runnable JS
  3. Runnable Python
  4. Runnable Java
  5. Prerequisites
  6. Concrete failure: proxy still sees profiles
  7. Failure modes (checklist outcomes)
  8. Variety note
  9. Continuous profiling extras
  10. Load test footnote
  11. Node vs Python vs Java quick pins
  12. Why profiling defaults sneak back
  13. Verify after the checklist
  14. 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 0 or 0.0 inside the same Sentry.init / sentry_sdk.init that 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. Confirm GET /health is {"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_sdk
  • sentry_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 captureException from 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.

Questions

Does Epure store profiles?
No. Profile items are discarded. Set profiles sample rates to 0.
Should I zero traces too?
Yes if unused. Some SDKs couple profiler setup to tracing. See Disable Sentry tracing.
How do I know I got every process?
Grep, restart all entrypoints, then check proxy logs for remaining profile payloads.
Will this fix a Sentry Cloud profiling bill?
Only for DSNs that still point at Sentry Cloud. Zero rates there or remove that DSN.