In some circumstances, you may find you need to install the APM+ Profiler for .NET in a manner other than the default installation approach. This documentation covers those outside-the-norm installation methods that are available to you. You will also find some additional details here about how the .NET Profiler works.
Technical and Performance Notes
The Stackify .NET Profiler has been specifically designed to minimize overhead incurred by profiling and to be used in an “always on” manner, even on production web servers. However, web servers already under high load and suffering CPU and Memory contention should not have any CLR profiling (Stackify or other) run for a significant period of time, for risk of creating further performance issues. In this event, if profiling is necessary for debugging an application, Stackify recommends enabling profiling for only short durations to capture / reproduce the event that you are trying to profile.
Once you enable the APM+ profiler and restart IIS, you will observe a slightly longer startup time to your application (5-10 seconds) as the CLR passes startup events to the profiler.
Per User Account Registration
It is important to note that CLR profilers are registered per user account and not per process or even globally. For example, if a profiler is registered for the account NETWORK SERVICE, all .NET processes running under that account will be profiled.
During installation, the Stackify .NET Profiler will be registered with all accounts that are running IIS Application Pools, and as such attempts to minimize profile collection to just IIS ASP.NET applications. The data collector will only display profiler output in the Stackify Dashboard for ASP.NET applications.
x86 and x64 Processes
The Stackify .NET Profiler will work with both x86 and x64 processes.
IIS "Classic" Application Pools
If you are running IIS with an application pool set to classic mode, please review this document: Install Stackify Module For Classic IIS App Pools
Command Line Installation Options
If you are installing the Stackify agent via command line (also known as a silent install or scripted install), you can control whether the APM+ Profiler is enabled or not by command line option.
Simply add the ENABLEPROFILER parameter and set it to 0 for disabled or 1 for enabled. It would look like this in the command line, for example, if the Agent were being installed with the Profiler disabled:
"Stackify Version#.exe" /s /v"ACTIVATIONKEY=activationkey ENVIRONMENT=\"environment\" ENABLEPROFILER=0 ENABLEREMOTE=True /qn /l*v .\Log.txt"
Note: On subsequent updates of the Agent, the status of the Profiler (enabled or disabled) will be preserved.
Optional Installation Methods
If you wish to enable APM+ Profiling on a server that is already running an Agent without APM+ enabled, but don't want to control it via the Stackify Dashboard
1) Open [Install Drive]:\Program Files (x86)\Stackify\Stackify.ini.
Find the following [Features] section:
[Feature] EnableProfiler=1 EnableRemoteAccess=1 RestartIIS=1 ProfilerStarted=0
2) Modify the following keys to alter the profiler settings:
- Blank = disabled
- 0 = disabled
- 1 = enabled
(IIS behavior when the the "EnableProfiler" setting has changed and the agent restarts)
- Blank = no restart
- 0 = no restart
- 1 = restart
3) Restart the service Stackify Monitoring Service by the Windows Services console
Note: Depending on the chosen method for enabling profiling, you may need to manually restart IIS for profiling and data collection to begin.
If you currently install the Stackify Windows Agent via command line, or wish to, you can enable profiling by default:
Follow the steps outlined in our Windows Agent install docs in the “Performing a Silent Install” section as described, but modify the command arguments to include the additional parameters:
"[name of exe]" /s /v"ACTIVATIONKEY=[your activation key] ENVIRONMENT=\"[your environment name]\" ENABLEPROFILER=1 RESTARTIIS=[0 or 1 - see section above] /qn /l*v .\Log.txt"
These command arguments will complete everything necessary to enable profiling, including restarting IIS.