Skip to content

Commit 8ab468b

Browse files
Merge pull request #280728 from hhunter-ms/hh-280361
[Snapshot Debugger] Add note warning users of overhead
2 parents 95d239c + d995e1a commit 8ab468b

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

articles/azure-monitor/snapshot-debugger/snapshot-debugger-troubleshoot.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,36 @@ To check the setting, open your *web.config* file and find the system.web sectio
105105
> Modifying the `httpRuntime targetFramework` value changes the runtime quirks applied to your application and can cause other, subtle behavior changes. Be sure to test your application thoroughly after making this change. For a full list of compatibility changes, see [Re-targeting changes](/dotnet/framework/migration-guide/application-compatibility#retargeting-changes).
106106
> [!NOTE]
107107
> If the `targetFramework` is 4.7 or above then Windows determines the available protocols. In Azure App Service, TLS 1.2 is available. However, if you're using your own virtual machine, you may need to enable TLS 1.2 in the OS.
108+
109+
## Snapshot Debugger overhead scenarios
110+
111+
The Snapshot Debugger is designed for use in production environments. The default settings include rate limits to minimize the impact on your applications.
112+
113+
However, you may experience small CPU, memory, and I/O overhead associated with the Snapshot Debugger, like in the following scenarios.
114+
115+
**When an exception is thrown in your application:**
116+
117+
- Creating a signature for the problem type and deciding whether to create a snapshot adds a very small CPU and memory overhead.
118+
- If de-optimization is enabled, there is an overhead for re-JITting the method that threw the exception. This will be incurred the next time that method executes. Depending on the size of the method, this could be between 1ms and 100ms of CPU time.
119+
120+
**If the exception handler decides to create a snapshot:**
121+
122+
- Creating the process snapshot takes about half a second (P50=0.3s, P90=1.2s, P95=1.9s) during which time, the thread that threw the exception is paused. Other threads are not blocked.
123+
124+
- Converting the process snapshot to a minidump and uploading it to Application Insights takes several minutes.
125+
- Convert: P50=63s, P90=187s, P95=275s.
126+
- Upload: P50=31s, P90=75s, P95=98s.
127+
128+
This is done in Snapshot Uploader, which runs in a separate process. The Snapshot Uploader process runs at below normal CPU priority and uses low priority I/O.
129+
130+
The minidump is first written to disk and the amount of disk spaced is roughly the same as the working set of the original process. Writing the minidump can induce page faults as memory is read.
131+
132+
The minidump is compressed during upload, which consumes both CPU and memory in the Snapshot Uploader process. The CPU, memory, and disk overhead for this is be proportional to the size of the process snapshot. Snapshot Uploader processes snapshots serially.
133+
134+
**When `TrackException` is called:**
135+
136+
The Snapshot Debugger checks if the exception is new or if a snapshot has been created for it. This adds a very small CPU overhead.
137+
108138
## Preview Versions of .NET Core
109139

110140
If you're using a preview version of .NET Core or your application references Application Insights SDK, directly or indirectly via a dependent assembly, follow the instructions for [Enable Snapshot Debugger for other environments](snapshot-debugger-vm.md?toc=/azure/azure-monitor/toc.json).

articles/azure-monitor/snapshot-debugger/snapshot-debugger.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,19 @@ While the Snapshot Debugger process continues to run and serve traffic to users
107107
108108
If you enabled the Snapshot Debugger but you aren't seeing snapshots, see the [Troubleshooting guide](snapshot-debugger-troubleshoot.md).
109109

110+
## Overhead
111+
112+
The Snapshot Debugger is designed for use in production environments. The default settings include rate limits to minimize the impact on your applications.
113+
114+
However, you may experience small CPU, memory, and I/O overhead associated with the Snapshot Debugger, such as:
115+
- When an exception is thrown in your application
116+
- If the exception handler decides to create a snapshot
117+
- When `TrackException` is called
118+
119+
There is **no additional cost** for storing data captured by Snapshot Debugger.
120+
121+
[See example scenarios in which you may experience Snapshot Debugger overhead.](./snapshot-debugger-troubleshoot.md#snapshot-debugger-overhead-scenarios)
122+
110123
## Limitations
111124

112125
This section discusses limitations for the Snapshot Debugger.

0 commit comments

Comments
 (0)