Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.

MSSQL Error 49920: Thread pool starvation detected in database engine

Обновлено: 25.08.2026  ·  Официальная база знаний
  • Ошибка в журнале SQL Server: Error: 49920, Severity: 16: Thread pool starvation detected in database engine.
  • Сервер перестает отвечать на новые клиентские подключения.
  • Высокое значение ожиданий по типу THREADPOOL в системных динамических представлениях.
  • Невозможность подключиться к серверу даже через SSMS (требуется выделенное административное подключение DAC).

1. Подключение через выделенный административный канал (DAC)

Если сервер не принимает стандартные сессии, подключитесь с помощью утилиты sqlcmd через DAC:

sqlcmd -S admin:127.0.0.1 -d master

2. Анализ очередей планировщиков (Schedulers)

SELECT 
    scheduler_id,
    cpu_id,
    current_tasks_count,
    runnable_tasks_count,
    current_workers_count,
    active_workers_count,
    work_queue_count
FROM sys.dm_os_schedulers
WHERE status = 'VISIBLE ONLINE';

Если work_queue_count > 0, задачи стоят в очереди из-за отсутствия свободных воркеров.

3. Выявление запросов, порождающих параллельные потоки

SELECT 
    r.session_id,
    r.status,
    r.blocking_session_id,
    r.wait_type,
    r.wait_time,
    t.text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE r.wait_type = 'THREADPOOL' OR r.blocking_session_id <> 0;

4. Корректировка MAXDOP и порога параллелизма (CTFP)

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
-- Установка Cost Threshold for Parallelism (рекомендуется от 50 для 1С)
EXEC sp_configure 'cost threshold for parallelism', 50;
-- Ограничение максимальной степени параллелизма
EXEC sp_configure 'max degree of parallelism', 4;
RECONFIGURE;
Практический опыт инженера: Для систем 1С:Предприятие критически важно не оставлять параметр MAXDOP = 0 (по умолчанию). Устанавливайте MAXDOP равным количеству физических ядер на один NUMA-узел (обычно от 2 до 8).

Частые вопросы (FAQ)

Что вызывает Thread Pool Starvation в SQL Server?

Голодание пула потоков вызывается лавинообразным ростом запросов с высоким параллелизмом (CXPACKET), массовыми блокировками (дедлоками) или нехваткой пула max worker threads.

Как рассчитать оптимальное количество Max Worker Threads?

Для 64-битных систем: 512 + ((Количество логических ядер - 4) * 16) при ядрах > 4. Ручное увеличение параметра требуется крайне редко.

Почему блокировки транзакций приводят к ожиданиям THREADPOOL?

Каждый заблокированный запрос удерживает рабочий поток. При сотнях ожидающих сессий весь пул потоков исчерпывается, блокируя даже простые новые запросы.

Как активировать Dedicated Administrator Connection (DAC) удаленно?

Выполните: EXEC sp_configure 'remote admin connections', 1; RECONFIGURE; для разрешения подключений с удаленных рабочих мест.