MSSQL Error 17888: All schedulers on Node appear deadlocked — Решение
- Критическая ошибка в Errorlog:
All schedulers on Node X appear deadlocked due to lack of worker threads. Process 0x... - Полная недоступность СУБД для новых и существующих подключений.
- Сервер 1С:Предприятие генерирует массовые ошибки разрыва физических соединений.
- Индикаторы CPU могут показывать нулевую или 100% активность при полном отсутствии дискового I/O.
1. Анализ распределения потоков по узлам NUMA
-- Проверка доступности воркеров по каждому NUMA-узлу
SELECT
parent_node_id,
scheduler_id,
current_tasks_count,
runnable_tasks_count,
active_workers_count,
work_queue_count
FROM sys.dm_os_schedulers
WHERE status = 'VISIBLE ONLINE'
ORDER BY parent_node_id, scheduler_id;2. Анализ параллельных планов запросов (CXPACKET / CXCONSUMER)
Неконтролируемый параллелизм в неоптимальных запросах 1С быстро сжигает сотни воркеров:
-- Проверка глобальных настроек параллелизма
SELECT name, value, value_in_use
FROM sys.configurations
WHERE name IN ('max degree of parallelism', 'cost threshold for parallelism');3. Экстренное снятие нагрузки через DAC (Dedicated Admin Connection)
# Подключение через консоль sqlcmd по выделенному каналу DAC
sqlcmd -S ADMIN:localhost -E
1> SELECT session_id, status, blocking_session_id, wait_type FROM sys.dm_exec_requests WHERE session_id > 50;
2> GO
-- Принудительное завершение головы блокирующей цепочки
3> KILL ;
4> GO 4. Конфигурация пулов соединений в кластере 1С
В консоли администрирования 1С (ras / 1CV8 Servers) для каждого рабочего процесса rphost установите жесткие лимиты соединений и настройте перезапуск процессов по объему памяти и времени непрерывной работы.
Частые вопросы (FAQ)
Чем ошибка 17888 отличается от 17884?
Ошибка 17884 информирует о задержке в обработке очереди задач, в то время как 17888 констатирует полный взаимный дедлок всех планировщиков на узле, когда ни один рабочий поток не может освободиться для разблокировки других.
Как предотвратить исчерпание потоков при массовых параллельных запросах в 1С?
Ограничьте параметр MAXDOP (рекомендуется от 1 до 4 для типовых баз 1С:ERP / УТ / КА) и увеличьте Cost Threshold for Parallelism со стандартных 5 до 40–50.
Что делать, если к серверу невозможно подключиться даже через DAC?
В ситуации полного взаимного дедлока всех планировщиков единственным выходом является перезапуск службы SQL Server через services.msc или принудительное завершение процесса sqlservr.exe.
Может ли нехватка оперативной памяти вызвать ошибку 17888?
Да, если память исчерпана и SQLOS не может выделить 2 MB памяти под стек нового потока, создание новых воркеров блокируется, приводя к коллапсу планировщиков.