SQL Thread Status Test

A SQL Server worker thread, also known as worker or thread, is a logical representation of an operating system thread. When executing serial requests, the SQL Server Database Engine will spawn a worker to execute a single active task. When executing parallel requests in row mode, the SQL Server Database Engine assigns a worker to coordinate the child workers responsible for completing tasks assigned to them, called the parent thread/coordinating thread. The parent thread has a parent task associated with it. The parent thread is the point of entry of the request and exists even before engine parses a query.

The more threads the SQL Server Database Engine can spawn, the more requests can be executed in parallel. If sufficient threads are not available in the server or more threads are idle / over-utilized, then, processing bottlenecks in the server become inevitable! To prevent request processing delays therefore, administrators must first understand how the threads in the request processing are utilized, proactively detect potential contention for threads, and reconfigure the target Microsoft SQL server to spawn more threads. This is where the SQL Thread Status test helps!

This test monitors the thread utilization on the target Microsoft SQL server, and alerts administrators to insufficiency of threads and excessive/abnormal utilization. Additionally, the test also tracks the idle threads and threads and in the queue, thus revealing if the SQL Server Database Engine is configured to process the workload. In the process, administrators are also notified on the count of threads that are waiting for CPU resources.

Target of the test : A Microsoft SQL server

Agent deploying the test : An internal agent

Outputs of the test : One set of results for the Microsoft SQL Server that is being monitored

Configurable parameters for the test
Parameters Description

Test period

How often should the test be executed

Host

The IP address of the Microsoft SQL server.

Port

The port number through which the Microsoft SQL server communicates. The default port is 1433.

User

If a Microsoft SQL Server 7.0/2000 is monitored, then provide the name of a SQL user with the Sysadmin role in this text box. While monitoring a Microsoft SQL Server 2005 or above, provide the name of a SQL user with all of the privileges outlined in User Privileges Required for Monitoring Microsoft SQL server.

Password

Specify the password corresponding to the mentioned user.

Confirm Password

Confirm the password by retyping it.

Instance

Enter the name of a specific Microsoft SQL instance that is to be monitored against this parameter. The default value of this parameter is “default”. To monitor a Microsoft SQL instance named “CFS”, enter this as the value of the Instance parameter.

Domain

By default, none is displayed in the Domain text box. If the ‘SQL server and Windows’ authentication has been enabled for the server being monitored, then the Domain can continue to be none. On the other hand, if ‘Windows only’ authentication has been enabled, then, in the Domain text box, specify the Windows domain in which the managed Microsoft SQL server exists. Also, in such a case, the User name and Password that you provide should be that of a user authorized to access the monitored SQL server.

ISNTLMV2

In some Windows networks, NTLM (NT LAN Manager) may be enabled. NTLM is a suite of Microsoft security protocols that provides authentication, integrity, and confidentiality to users. NTLM version 2 (“NTLMv2”) was concocted to address the security issues present in NTLM. By default, the ISNTLMV2 flag is set to No, indicating that NTLMv2 is not enabled by default on the target Microsoft SQL host. Set this flag to Yes if NTLMv2 is enabled on the target host.

IsPassive

If the value chosen is Yes, then the Microsoft SQL server under consideration is a passive server in a SQL cluster. No alerts will be generated if the server is not running. Measures will be reported as “Not applicable" by the agent if the server is not up.

SSL

By default, the SSL flag is set to No, indicating that the target Microsoft SQL server is not SSL-enabled by default. To enable the test to connect to an SSL-enabled Microsoft SQL server, set the SSL flag to Yes.

DD Frequency

Refers to the frequency with which detailed diagnosis measures are to be generated for this test. The default is 1:1. This indicates that, by default, detailed measures will be generated every time this test runs, and also every time the test detects a problem. You can modify this frequency, if you so desire. Also, if you intend to disable the detailed diagnosis capability for this test, you can do so by specifying none against DD frequency.

Detailed Diagnosis

To make diagnosis more efficient and accurate, the eG Enterprise embeds an optional detailed diagnostic capability. With this capability, the eG agents can be configured to run detailed, more elaborate tests as and when specific problems are detected. To enable the detailed diagnosis capability of this test for a particular server, choose the On option. To disable the capability, click on the Off option.

The option to selectively enable/disable the detailed diagnosis capability will be available only if the following conditions are fulfilled:

  • The eG manager license should allow the detailed diagnosis capability
  • Both the normal and abnormal frequencies configured for the detailed diagnosis measures should not be 0.
Measurements made by the test
Measurement Description Measurement Unit Interpretation

Maximum threads

Indicates the number of worker threads that are available on the target SQL server to process query requests, login, logout, and similar application requests.

Number

The default value for max worker threads is 0. This enables the Microsoft SQL Server to automatically configure the number of worker threads at startup. The default setting is best for most systems. However, depending on your system configuration, setting max worker threads to a specific value sometimes improves performance.

Active threads

Indicates the number of threads that are actively running on the SQL server.

Number

This measure is a good indicator of workload on the target Microsoft SQL server.

Idle threads

Indicates the number of threads that are in idle state.

Number

A low value is preferred for this measure.

Free threads

Indicates the number of threads that are available for use on the server.

Number

 

Thread utilization

Indicates the percentage of threads utilized on the server.

Percent

A high value for this measure indicates that you may need to increase the maximum thread count.

Queued threads

Indicates the number of threads that are in the queue.

Number

A high value for this measure indicates that you may need to increase the maximum thread count.

The detailed diagnosis of this measure reveals schedular ID, session ID, name of the database, name of the login user, name of the host , the program name, wait type, how long the threads are in queue, CPU time, total elapsed, time and SQL time.

Thread waits for CPU

Indicates the number of threads that are currently waiting for CPU resources.

Number

If the value of this measure is high, it indicates that a large number of queries, which are assigned to the scheduler for processing, are waiting for its turn to run due to insufficient CPU resources.

The detailed diagnosis of this measure reveals schedular ID, session ID, name of the database, name of the login user, name of the host , the program name, wait type, how long the threads are waiting, CPU time, total elapsed, time and SQL time.