Кто использует мои рабочие темы? SQL Server 2014 - HADR

10

Недавно у нас была проблема в нашей среде SQL Server 2014 HADR, где на одном из серверов закончились рабочие потоки.

Мы получили сообщение:

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

Сообщение об ошибке при запуске

Я уже открыл другой вопрос, чтобы получить утверждение, которое (я думал) должно помочь мне проанализировать проблему ( Можно ли увидеть, какой SPID использует какой планировщик (рабочий поток)? ). Хотя сейчас у меня есть запрос, чтобы найти потоки, которые используют систему, я не понимаю, почему на этом сервере закончились рабочие потоки.

Наша среда выглядит следующим образом:

  • 4 Windows Server 2012 R2
  • SQL Server 2014 Enterprise
  • 24 процессора -> 832 рабочих потоков
  • 256 ГБ оперативной памяти
  • 12 групп доступности (всего)
  • 642 базы данных (всего)

Итак, сервер, на котором возникла проблема, имел следующую конфигурацию:

  • 5 групп доступности (3 основных / 2 дополнительных)
  • 325 баз данных (127 первичных / 198 вторичных)
  • MAXDOP = 8
  • Cost Threshold for Parallelism = 50
  • План электропитания установлен на «Высокая производительность»

Чтобы «решить» проблему, мы вручную перевели одну группу доступности на вторичный сервер. Конфигурация этого сервера теперь:

  • 5 групп доступности (2 основных / 3 дополнительных)
  • 325 баз данных (77 первичных / 248 вторичных)

Я отслеживаю доступные темы с этим заявлением:

declare @max int
select @max = max_workers_count from sys.dm_os_sys_info

select 
    @max as 'TotalThreads',
    sum(active_Workers_count) as 'CurrentThreads',
    @max - sum(active_Workers_count) as 'AvailableThreads',
    sum(runnable_tasks_count) as 'WorkersWaitingForCpu',
    sum(work_queue_count) as 'RequestWaitingForThreads' ,
    sum(current_workers_count) as 'AssociatedWorkers'
from  
    sys.dm_os_Schedulers where status='VISIBLE ONLINE'

Обычно на сервере доступно около 250-430 рабочих потоков, но на момент возникновения проблемы рабочих не осталось.

-119 доступных тем

Сегодня из ниоткуда количество рабочих сократилось с 327 до 50, но только на минуту, а затем снова поднялось до 400.

Я уже видел другой вопрос (использование HADR с высоким рабочим потоком ), но он мне не помогает.

Наша система работала стабильно более года без проблем. У нас не было сбоев или других серьезных изменений в распределении баз данных.

Мы используем «Синхронный коммит» между репликами. Насколько я понимаю, сжатие не задействовано, см. Раздел «Настройка сжатия для группы доступности» в документации.

Кто-нибудь имеет представление о том, что использует все рабочие потоки?

РЕДАКТИРОВАТЬ: нашел эту страницу, где есть много информации именно об этих проблемах http://www.techdevops.com/Article.aspx?CID=24

Дэн Стеф
источник

Ответы:

1

Ответ сообщества вики :

У вас есть большое количество баз данных в группах доступности, и именно там будут ваши потоки. Существует много вопросов, связанных со сжатием, шифрованием и стоимостью транспортировки. Попробуйте отключить сжатие, это сократит использование вашего потока примерно на треть (в зависимости от количества реплик).

Вопрос помечен SQL Server 2014, который по умолчанию будет использовать сжатие. SQL Server 2016 по умолчанию не будет использовать сжатие для синхронизации.

Вам может потребоваться увеличить рабочие потоки в экземпляре или, что лучше, сбалансировать наиболее активные и неактивные на нескольких серверах. См. Связанный с Q & A запрос группы доступности AlwaysON очень медленно .

Вы также можете обнаружить, что это приложение не может правильно закрыть запросы. Это может привести к большому количеству снов (которые потребляют рабочие).

Количество фактически используемых потоков зависит от того, насколько активны базы данных. Вы можете иметь 1000 баз данных, и если большинство из них простаивают в 95% случаев, у вас не возникнет никаких проблем. Кажется, что ваши базы данных стали более активными и съели больше ваших потоков. Это длинный и короткий путь.

оборота user126897
источник