Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

MSSQL_17884 1С:Предприятие и СУБД

MSSQL Error 17884: New queries assigned to process have not been picked up — Решение

Обновлено: 25.08.2026 · Официальная документация ↗
  • Сообщение в Errorlog: New queries assigned to process on Node X have not been picked up by a worker thread in Y seconds. Blocking or long-running queries can contribute to this condition.
  • Пользователи 1С получают таймауты подключения: «Время ожидания выполнения операции истекло».
  • Счетчик sys.dm_os_schedulers.work_queue_count постоянно растет.
  • Процессор может быть не загружен на 100%, но новые транзакции не стартуют.

1. Проверка исчерпания пула потоков (Thread Pool Exhaustion)

-- Проверка лимита и текущего количества используемых воркеров
SELECT 
    max_workers_count,
    (SELECT COUNT(*) FROM sys.dm_os_workers) AS current_workers_count,
    (SELECT SUM(work_queue_count) FROM sys.dm_os_schedulers) AS total_queued_tasks
FROM sys.dm_os_sys_info;

2. Анализ ожиданий THREADPOOL и блокирующих цепочек

-- Проверка ожиданий выделения рабочего потока
SELECT 
    wait_type,
    waiting_tasks_count,
    wait_time_ms,
    signal_wait_time_ms
FROM sys.dm_os_wait_stats
WHERE wait_type IN ('THREADPOOL', 'SOS_SCHEDULER_YIELD', 'RESOURCE_SEMAPHORE');

3. Поиск корневого блокирующего запроса (Head Blocker)

SELECT 
    tl.resource_type,
    tl.resource_database_id,
    tl.request_session_id,
    wt.blocking_session_id,
    er.command,
    er.cpu_time,
    er.total_elapsed_time,
    st.text AS blocker_query
FROM sys.dm_tran_locks tl
JOIN sys.dm_os_waiting_tasks wt ON tl.lock_owner_address = wt.resource_address
JOIN sys.dm_exec_requests er ON wt.blocking_session_id = er.session_id
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) st
WHERE wt.blocking_session_id IS NOT NULL AND wt.blocking_session_id != wt.session_id;

4. Корректировка max worker threads и архитектуры пула 1С

Не рекомендуется бездумно завышать max worker threads. Оптимизируйте пул соединений на стороне кластера серверов 1С (параметр «Лимит количества соединений на рабочий процесс» в консоли администрирования 1С).

💡 Практика специалистов: Ошибка 17884 почти никогда не является проблемой самого SQL Server. Это прямое следствие массивного накопления ожиданий (Lock escalations, LCK_M_X) в коде конфигураций 1С, блокирующих освобождение воркеров.

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

Почему увеличение 'max worker threads' часто усугубляет проблему?

Увеличение количества потоков при наличии корневой блокировки или нехватки ресурсов приводит к росту накладных расходов на контекстное переключение (context switching) и деградации памяти ядра под стеки потоков (2 MB на поток).

Как тип подключения 1С:Предприятие влияет на ошибку 17884?

Нерегламентированные запросы пользователей или зависшие фоновые задания 1С удерживают соединения открытыми, исчерпывая лимиты пула воркеров SQLOS.

Что означает параметр 'Node X' в тексте ошибки?

Это номер аппаратного NUMA-узла процессора. Если ошибка возникает только на определенной ноде, это может указывать на неравномерное распределение нагрузки или сбой локальной памяти NUMA.

Как экстренно подключиться к серверу для диагностики при THREADPOOL?

Используйте выделенное административное подключение (DAC — Dedicated Administrator Connection) через sqlcmd -A или Management Studio с префиксом ADMIN:ServerName.

Полезные материалы
Рекомендуем