How to debug issues with high CPU on a Windows Server running the vFunction Controller
Isolate the Problematic Component
To investigate the CPU usage of an Application, isolate the problematic component by understanding what is consuming the CPU:
- Is the resource constraint happening when the application is running without the vFunction Agent but with Viper running?
- Is the resource constraint happening when the application is running with the vFunction Agent enabled?
- Is the resource constraint happening when the application is running and Learning is enabled?
Capture Resource Information for all Components
Capture the CPU and Memory Usage for each of the following processes:
- The application processes
- The vFunction controllers (controller.exe in windows)
- The Viper process (Viper.net.exe process in the task manager)
Debug Agent Issues
Please follow the below procedure for issues related to the .NET agent:
- On the Windows Server, capture the CPU and memory values when the vFunction Agent is disabled in each application process
- .NET Framework 4.x Applications: COR_ENABLE_PROFILING=0
- .NET Core 3.x and 6, 7, 8 Applications: CORECLR_ENABLE_PROFILING=0
- Enable the vFunction Agent and restart the application
- .NET Framework 4.x Applications: COR_ENABLE_PROFILING=1
- .NET Core 3.x and 6, 7, 8 Applications: CORECLR_ENABLE_PROFILING=1
- After the services are up, capture the CPU and memory values
- In the vFunction Server UI, start Learning with a new Measurement
- Go to the vFunction server UI
- Select
Learning
in the top, center Menu Bar - Select
Measurements
>New Measurement
in the bottom, center of the screen - Select each relevant Controller so that it is highlighted by a blue circle
- Click the blue
Start Learning
button in the bottom, center of the screen
- In the vFunction Server UI, monitor the bottom left counts of Functions in the vFunction Server UI until the Functions count changes from zero to a value
- On the Windows Server, capture the CPU and Memory values for the Application, Viper and Controller processes