В примере 10.6 большое время отклика пользовательской операции вызвано чрезмерными задержками в отдельных вызовах ввода/вывода. К моменту получения этого профиля ресурсов аналитик уже исключил избыточные вызовы дискового чтения, оставив всего восемнадцать действительно необходимых. Однако средняя задержка чтения, составляющая 2,023 секунды на вызов, далека от предельного значения 0,010 секунды, приведенного в табл. 10.2. По одному профилю ресурсов невозможно установить, длится ли каждый из 18 вызовов чтения 2,023 секунды или же какой-то один из них был намного продолжительнее остальных. (Помните, по агрегированным значениям нельзя восстановить составляющие. даже в профилях ресурсов.)
Не вызывает сомнений только одно: в этой пользовательской операции по крайней мере один вызов дискового чтения выполняется аномально долго. Следующая последовательность шагов поможет нам добраться до истоков проблемы:
Какой блок или блоки участвуют в медленных операциях ввода/ вывода? Ответ содержится в файле расширенной трассировки SQL. В главах 5 и 6 рассказано, как найти нужную информацию.
Выяснив, на каких блоках замедляется операция чтения, можно обратиться к администратору дисковой подсистемы за помощью в определении устройств, на которых они находятся.
Определив, на каких именно устройствах возникает проблема, узнайте, не слишком ли расточительно обращаются с ними программы, конкурирующие с диагностируемой операцией. Если это так, то исключение бесполезной нагрузки уменьшит задержки в очереди к перегруженному устройству.
Проверьте, не создает ли излишнюю нагрузку конфигурация самого устройства. Вот примеры:
Мне встречались системы с двумя и более зеркалами, сконфигурированными так, что узкое место возникало при чтении и записи через единственный контроллер.
Системы RAID уровня 5 обычно имеют недостаточную производительность ввода/вывода. Применение массива RAID5 не обязательно является ошибкой. Однако не все отдают себе отчет в том, что для достижения соответствующей производительности ввода/вывода массив RAID уровня 5, как правило, требует в два или в четыре раза больше дисков, чем может показаться на первый взгляд [Millsap (2000a)].
Иногда удается переместить нагрузку с перегруженного устройства на более свободное на проблемном интервале времени. Системные администраторы называют такую операцию балансировкой ввода/вывода. В начале 1990-х годов я встречал много систем Oracle, в которых проблема задержек ввода/вывода была вызвана крайне неудачным размещением файлов (когда, например, все файлы базы данных Oracle находились на одном диске). Думаю, теперь такие ошибки встречаются реже. Однако если уж такая безумная конфигурация встретится на вашем пути, то она наверняка будет сопровождаться непомерными задержками ввода/вывода, независимо от того, генерирует приложение избыточные вызовы или нет.
• Разумеется, причиной низкой производительности могут быть и сбои оборудования. Неисправность дискового контроллера, вызывающая перезапросы и тайм-ауты, может намного ухудшить время отклика. Если устройства ввода/вывода работают аномально медленно, проверьте в системном журнале, не тратит ли операционная система время на безуспешные попытки заставить оборудование работать.
При достаточном опыте и творческом подходе шаги 3 и 4 могут дать превосходный результат.
< Предыдущая | Следующая > |
---|