-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Troubleshooting Node profiler issue #33075
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Preview links (active after the
|
janine-c
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great, Reshmi, thank you for documenting these additional flags! I made some minor formatting suggestions to make the new content easier to copy and paste. Take a look and let me know what you think, or if there's anything I can clarify 🙂
| When the Datadog profiler is enabled, it periodically sends a small signal to collect profiling data. If the application is idle (waiting for I/O or timers), this signal briefly wakes the event loop to take a sample, even though there's no real work to do. As a result, ELU appears higher because the loop wakes up more often, but CPU usage stays low, and no latency or extra workload is introduced. | ||
| In a busy application, these same signals occur while the loop is already active, so the effect on ELU is negligible. | ||
|
|
||
| ## Disabling Advanced Profiling Features |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| ## Disabling Advanced Profiling Features | |
| ## Disable advanced profiling features |
|
|
||
| Advanced profiling capabilities in Datadog provide rich context—such as endpoint-level visibility, timeline correlations, and code hotspot linking—that significantly improve analysis quality. | ||
| Under normal circumstances, these should remain enabled. However, when diagnosing performance issues or overhead, temporarily disabling specific components can help isolate the source of additional load. | ||
| The goal is to narrow down which feature contributes to CPU, memory, or latency changes during profiling. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| The goal is to narrow down which feature contributes to CPU, memory, or latency changes during profiling. | |
| You can do so to narrow down which feature contributes to CPU, memory, or latency changes during profiling. |
| 1. Disable Code Hotspots | ||
|
|
||
| `DD_PROFILING_CODEHOTSPOTS_ENABLED=false` Disables trace-to-profile linking in Datadog UI. | ||
|
|
||
| 2. Disable Timeline View | ||
|
|
||
| `DD_PROFILING_TIMELINE_ENABLED=false` Disables timeline view in the Datadog UI. | ||
|
|
||
| 3. Disable Endpoint Collection | ||
|
|
||
| `DD_PROFILING_ENDPOINT_COLLECTION_ENABLED=false` Disables per-endpoint aggregation of profiling data, this prevents grouping samples by HTTP endpoints or routes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| 1. Disable Code Hotspots | |
| `DD_PROFILING_CODEHOTSPOTS_ENABLED=false` Disables trace-to-profile linking in Datadog UI. | |
| 2. Disable Timeline View | |
| `DD_PROFILING_TIMELINE_ENABLED=false` Disables timeline view in the Datadog UI. | |
| 3. Disable Endpoint Collection | |
| `DD_PROFILING_ENDPOINT_COLLECTION_ENABLED=false` Disables per-endpoint aggregation of profiling data, this prevents grouping samples by HTTP endpoints or routes | |
| - **Disable code hotspots** | |
| Disable trace-to-profile linking in the Datadog UI: | |
| ``` | |
| DD_PROFILING_CODEHOTSPOTS_ENABLED=false | |
| ``` | |
| - **Disable timeline view** | |
| Disable timeline view in the Datadog UI: | |
| ``` | |
| DD_PROFILING_TIMELINE_ENABLED=false | |
| ``` | |
| - **Disable endpoint collection** | |
| Disable per-endpoint aggregation of profiling data, which groups samples by HTTP endpoints or routes: | |
| ``` | |
| DD_PROFILING_ENDPOINT_COLLECTION_ENABLED=false | |
| ``` |
Some minor formatting changes to create some indentation so it's easier to read, and make the code samples easier to see 🙂
|
|
||
| `DD_PROFILING_ENDPOINT_COLLECTION_ENABLED=false` Disables per-endpoint aggregation of profiling data, this prevents grouping samples by HTTP endpoints or routes | ||
|
|
||
| Once you identify that disabling a specific profiling feature reduces overhead, please report your findings so we can investigate further. You can contact [Datadog support][5] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Once you identify that disabling a specific profiling feature reduces overhead, please report your findings so we can investigate further. You can contact [Datadog support][5] | |
| After you identify that disabling a specific profiling feature reduces overhead, report your findings so Datadog can investigate further. You can do so by contacting [Datadog support][5]. |
What does this PR do? What is the motivation?
The flags for disabling advanced features are not fully documented in the Node.js troubleshooting sections, as most customers use the default profiler configuration. This information should be included to help customers fine-tune performance issues independently
Merge instructions
Merge readiness:
For Datadog employees:
Your branch name MUST follow the
<name>/<description>convention and include the forward slash (/). Without this format, your pull request will not pass CI, the GitLab pipeline will not run, and you won't get a branch preview. Getting a branch preview makes it easier for us to check any issues with your PR, such as broken links.If your branch doesn't follow this format, rename it or create a new branch and PR.
[6/5/2025] Merge queue has been disabled on the documentation repo. If you have write access to the repo, the PR has been reviewed by a Documentation team member, and all of the required checks have passed, you can use the Squash and Merge button to merge the PR. If you don't have write access, or you need help, reach out in the #documentation channel in Slack.
Additional notes