SQL.RU
 client/server technologies
 Главная | Документация | Статьи | Книги | Форум | Блоги | Опросы | Гостевая | Рассылка | Работа | Поиск | FAQ |

Тюнинг подсистем I/O для SQL Server

ПУБЛИКАЦИИ  

В статье рассматриваются два рецепта устранения проблем подсистем ввода-вывода сервера с установленной ОС Windows NT/2000 и обслуживающего MS SQL Server.

СОДЕРЖАНИЕ

1.Недостаточное количество жёстких дисков
2.Увеличение числа свободных блоков подключения

Недостаточное количество жёстких дисков

Одной из возможных причин, следствием которой становится плохая производительность сервера, является недостаточная пропускная способность подсистемы ввода - вывода (I/O). Хотя на пропускную способность подсистемы I/O влияет много факторов, наиболее частой причиной потери производительности является недостаточное количество жёстких дисков. Ситуация, когда для разворачивания SQL Server используется обыкновенный персональный компьютер, очень типична для большого количества российских фирм, а использование IDE дисков, являющихся более дешёвым решением по сравнению с дисками SCSI, становится повсеместной практикой. К тому же, как бы не расширялся в последнее время рынок не дорогих RAID контроллеров, избыточность дисков по-прежнему остаётся для многих не позволимой роскошью. Следствием этого является то, что когда подсистема I/O перестаёт успевать обработать нагрузку создаваемую SQL Server, исполнение запросов к серверу замедляется, а блокировки держатся намного дольше. Одним из косвенных признаков того, что подсистемы I/O стала "узким местом", является снижение утилизации процессора (CPU).
Чтобы наверняка определить, является ли подсистемы I/O "узким местом", можно воспользоваться оснасткой "Производительность" (Performance Monitor), обратившись к набору счётчиков "Физический диск" (Physical Disk), двумя наиболее показательными среди которых являются: "Среднее время записи (чтения) на диск" (Avg. Disk sec/Write и Avg. Disk sec/Read). Эти счётчики характеризует среднее время в секундах, затрачиваемое на одну операцию чтения или записи данных на диск. Если среднее значение одного их этих счётчиков для одного диска выше 0,02 секунды, это говорит о том, что дисковые операции слишком интенсивны. Типичная продолжительность одной, произвольной операции чтения современного диска должна быть приблизительно 0,006 секунды.
Если Ваша подсистема I/O стала "узким местом", придётся всё-таки рассмотреть вопрос или об увеличении числа дисков и разнесения на них файлов баз данных и журналов транзакций, или применения RAID - массивов.

[В начало]

Увеличение числа свободных блоков подключения

Если при анализе системного журнала Event Viewer Вы обнаружили появления сообщения, Например:

Event ID: 2022
Source: Srv
Description: Server was unable to find a free connection 144 times in the last 60 seconds

Это говорит о том, что сервер не способен вовремя обработать все сетевые запросы, которые поставлены в очередь сетевым уровнем потока I/O. Автору статьи пришлось наблюдать такую ситуацию при репликации шести публикаций на порядка двадцати подписчиков. Сервер исполнял роли издателя и дистрибутора. Дисковая подсистема успешно справлялась с обработкой задач репликации. Ошибки наблюдались во время интенсивного подключения агентов репликации слиянием к издателю.
Решении этой проблемы, согласно рекомендаций Майкрософт, состоит в добавлении двух ключей реестра в ветку:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters

  • MaxFreeConnections - этот ключ задаёт максимальное число свободных блоков подключения.
      Value Name: MaxFreeConnections
      Data Type: REG_DWORD
      Value data: Any Value Up to 100 (in decimal)

  • MinFreeConnections - этот ключ задаёт минимальное число свободных блоков подключения. Применяется только для   Windows NT 4.0. Для W2K не имеет никакого эффекта.
      Value Name: MinFreeConnections
      Data Type: REG_DWORD
      Value data: Any Value Up to 32 (in decimal)

Представленный ниже список показывает заданные по умолчанию значения MinFreeConnections и MaxFreeConnections для каждой из стандартных установок оптимизации сервера:

  • Minimize Memory Used
      MinFreeConnections = 2
      MaxFreeConnections = 2

  • Balance
      MinFreeConnections = 2
      MaxFreeConnections = 4

  • Maximize Throughput for File Sharing
      MinFreeConnections = 4
      MaxFreeConnections = 8

  • Maximize Throughput for Network Applications
      MinFreeConnections = 4
      MaxFreeConnections = 8

Ориентируясь на стандартные значения, Вы можете путём последовательного, не значительного увеличения значений добавленных Вам новых параметров, подобрать их такое значение, что приведёт к исключению возможности появления Event ID: 2022.

ОБРАТИТЕ ВНИМАНИЕ: Вы должны перезапустить компьютер для того, чтобы изменения вступили в силу.

Дополнительную информацию Вы можете найти в следующих статьях Microsoft Knowledge Base:
How to Troubleshoot Event ID 2021 and Event ID 2022
Receiving Multiple Instances of Event ID 2022 Q245080

[В начало]

Автор: Александр Гладченко  2002г.

Rambler's Top100 Рейтинг@Mail.ru  Administrator: Обратная связь 
Copyright: SQL.Ru 2000-2013