CPU bottleneck:
We have to monitor the CPU
load that can identify the resources that are overworked.
- High Signal wait causes CPU bottleneck. It should be <25%. A query which is ready to execute and waiting for its turn is called runnable query, which is responsible signal wait. Property: % previlize time <25%
- Plan re-use is <90 causes CPU bottleneck. The computation of plan reuse is (Batch requests – SQL compilations)/Batch requests.
Memory bottleneck:
We need to monitor over all
physical and virtual memory to ensure it is not fully allocated.
- Consistently low average page life expectancy causes the issue. Once any page is copied to buffer then it has to be there at least 300 ms or 5 minutes. <5 minutes is a problem. The reasons could be memory pressure, missing indexes and cache flush.
- Consistently low SQL cache hit ratio cause the issue. It should be >90%.Anything less may indicate memory pressure or missing indexes. Buffer cache hit ratio tells how many pages read from buffer and how many pages read from the disk.
Disk IO bottleneck:
The SQL Server reads and
writes to the database on a regular basis. A slow response during processing
can result in decreased SQL performance.
- High average disk seconds per read/write causes the issue. It shows the average time of data reads and writes from the disk and to the disk. Sustained high values for disk second/read > 20 milli seconds is the problem.
- Big IOs such as table and range scans due to missing indexes.
- Network bottleneck:Even with fast and smooth running server, a client who accesses the server over a slow network will encounter delays. The network bytes per second metric <50% causes issue.