Перейти к содержимому

MSSQL 2008 R2 — 100% CPU

Вчера, столкнулся с неожиданной, но весьма неприятной проблемой - MSSQL съел 100% ЦПУ и не хотел быстро отдавать данные.

Вчера, столкнулся с неожиданной, но весьма неприятной проблемой - съел 100% ЦПУ и не хотел быстро отдавать данные. Просто небольшая заметка как мы нашли и пофиксили этот баг

Вчера, на одном из головных проектов нашей компании, клиент отметил необычайно низкую скорость загрузки страниц на сайте. В ходе иследования, было выявлено, что сервер баз данных MSSQL отъел себе 100% времени процессора, и никак не хотел снижать свои аппетиты.
Был привлечен технический лидер нашей компании, и он указал на одну из возможных причин - кеш запросов разросся до такой степени, что выборка из него занимало большое время, и потребляло приличное количество ресурсов.
После того, как я получил толчок от нашего лидера, Гугль принес мне в клюве результат - http://www.sqlservercentral.com/Forums/Topic1037692-1550-1.aspx#bm1038888

Вкратце, для снижения загрузки процедурного кеша и времени компиляции, необходимо включить встроенную процедуру оптимизации AdHoc Workloads при помощи 2х нижеприведенных процедур:

   sp_configure 'show advanced options', 1 
   go 
   reconfigure 
   go

   sp_configure ' for ad hoc workloads', 1 
   go 
   reconfigure 
   go

Что моментально снизило нагрузку на процессор до вполне переносимых 60% процентов и позволило сделать клиента довольным ;).