Solving Windows 2008 Cannot Create Thread Problem


During the installation of Windows 2008 system cluster, the author made the last error when creating AD domain control, and could not configure DNS. After investigation, the system rigidly specifies that the maximum number of DNS threads is 120, but DNS does not limit the number of cores of the CPU, so creating more than 120 threads will give an error. How to solve this problem?

Recently, I installed Windows 2008 system cluster, the installation environment is two Inspur Yingxin NF8560M2+ storage + 2 fiber switches.

The installation steps are:

1. Install the operating system.

2. Install the system driver.

3. Install the system patch.

4. Storage mount and storage area partitioning (arbitration + sharing).

5. Install the client program stored in the storage + Windows' own multipath (I /O) function (server management & rarr; function & rarr; new features).

6. Online storage of hard drives, add drive letters (arbitration and shared drive letters are usually X and Y, can be customized).

7. Cluster configuration (specific configuration documents can be found online according to the database to be installed, the focus is on the settings of the heartbeat network card).


There is such a problem during the installation process: when the AD domain control is created to the end, an error is reported, indicating that DNS cannot be configured and the RPC server is unavailable. After clicking "OK" and "Complete", the DNS server can be created, but the DNS service will be automatically closed. View the event log to show that DNS could not create a thread.

Failure Analysis

In the current Windows 2008 R2 x64 and Windows 2008 or Windows 2008 R2 DNS service code, the maximum number of DNS threads is specified to be 120. However, DNS does not impose any restrictions on the number of CPU cores, so more than 120 threads are created.

Specifically, the DNS service has two functions. The thread creation is determined by the number of CPUs, the DNS Dynamic update function, and the UDP I/O AND dispatch program. On 64-bit machines, they create 64 DNS Dynamic threads and 64 UDP processing threads. Therefore, on a 64-bit CPU platform, the number of threads will greatly exceed the limit, and an error of ERROR_SERVICE_NO_THEAD will be reported. On a 32-bit platform, the DNS service works fine because it creates up to 86 threads.

The server used by the author unit is configured with 4-way 8-core CPU. By default, Hyper-Threading Technology is enabled. The actual 32-bit can be simulated to 64-bit (Task Manager & Rarr; Performance column can be viewed).


This is currently a bug in the Windows DNS service, but this issue may only be fixed in Windows 2008. Therefore, our only choice now is to use a platform with less than 48-bit CPU to provide DNS services (we can meet the thread limit by reducing the 18 integrated DNS zones of AD). Of course, if we only use a 32-bit CPU, then there is no problem. The specific solution steps are as follows:

1. Click on "Start”→“Run”, type “msconfig”, pop-up "system configuration" window, in the "Start" option Find the “Advanced“ tab, change the number of CPUs and change it to 32.

2. After booting into the "BIOS & rarr; Advanced & rarr; Process & Clock & rarr; intel HT technology", the default Enable here is changed to Disabled.

After the modification is completed, in the column "Task Manager → Performance", you can see that the number of CPUs is adjusted to 32, and the problem is solved.

Copyright © Windows knowledge All Rights Reserved