средства оценки производительности
TRANSCRIPT
Семинар партнеров фирмы «1С»Семинар партнеров фирмы «1С»
Фирма «1С»
30 сентября – 2 октября 2005 г.
Средства оценки производительности
приложений на платформе 1С:Предприятие 8.0
Средства оценки производительности
приложений на платформе 1С:Предприятие 8.0
Средства оценки производительности
Содержание
Общий подход к оценке производительности и оптимизации приложений на платформе 1С:Предприятие 8.0
Инструменты, используемые при анализе производительности и оптимизации
Принципы нагрузочного тестирование приложения
Диагностика и оптимизация клиент-серверного варианта использования 1С:Предприятия 8.0 на «низком уровне»
Средства оценки производительности
Уровни работы приложения
Уровень 2. Конфигурация
Уровень 3. Платформа 1С:Предприятия 8.0
Уровень 4. СУБД
Уровень 5. Операционная система и оборудование
Уровень 1. Автоматизированное рабочее место
Уровень 0. Автоматизируемые процессы предприятия
Средства оценки производительности
Диагностика, локализация и оптимизация проблем с производительностью
Проблема с производительностью:Проявляется (диагностируется) на уровне X
Локализуется (имеет причину) на уровне Y
Оптимизируется на уровне Z
При этом:Уровни X и Y чаще всего не совпадают
Уровни Y и Z так же могут не совпадать
Уровень Z, как правило, необходимо выбирать из нескольких возможных
Сценарий действий:Диагностирование проблемы на уровне X
Локализация проблемы на уровне Y
Поиск уровня Z, на котором возможно наиболее адекватное решение проблемы
Средства оценки производительности
Диагностика проблем производительности на уровнях0 и 1
Нагрузочное тестирование:Описание модели системы:
ТребованияКритерии работоспособностиПределы масштабируемости
Генерация тестовой базы с заданными параметрамиСценарий тестирования, включающий:
Виртуальных пользователейДействия виртуальных пользователейПоказатели производительности
– Время выполнения действия– Относительное время выполнения действия
Критерии для каждого показателя– Требования бизнес-логики– Относительное время на одной базе не должно увеличиваться– Относительное время на большей базе увеличивается незначительно
Запуск сценария тестирования, в том числе на нескольких компьютерах в рамках локальной сетиСбор, хранение и анализ показателей производительности
В настоящее время Фирма «1С» ведет разработку технологии, которая позволит упростить процесс нагрузочного тестирования и автоматизировать некоторые рутинные операции.
Средства оценки производительности
Диагностика проблем на других уровнях
Уровни 2 и 3. Прикладное решение и платформаИнструменты:
Режим замера производительности 1С:Предприятия 8.0Журнал регистрации
Симптомы:Неоправданно большое время выполнения отдельных операцийСообщения об ошибках блокировок (timeout и deadlok)Большое время отклика системы
Уровень 4. СУБД (только для клиент-серверного варианта использования):Инструменты:
– SQL Profiler– SQL Query Analizer
Симптомы:– Запрос выполняется неоправданно длительное время– План запроса содержит операции: Table Scan или Nested Loops
Уровень 5. Операционная система и оборудованиеИнструменты:
Performance MonitorКритерии:
Сбалансированная нагрузка на все компьютерыСбалансированная нагрузка на все компоненты каждого компьютера
Средства оценки производительности
Диагностика проблем на уровне СУБД. Общие сведения
Общие сведения:Проблемы проявляются на информационных базах большого объема
Использование файлового варианта для ИБ большого объема не типично
Рассмотрим средства диагностики проблем для клиент-серверного варианта
Уровень СУБД разделен на два подуровня:Уровень 4.1. Высокий уровень работы с данными. Запросы на языке Transact SQL
Уровень 4.2. Низкий уровень работы с данными. Планы запроса
Есть большая разница междузапросом на языке SQL и
операцией, которую будет выполнять SQL Server
Запрос может быть выполнен по-разному:Таблицы могут обрабатываться в разном порядке
Выражения в условиях могут проверятся в разной последовательности
Могут использоваться или не использоваться те или другие индексы
Объединение таблиц может осуществлятся несколькими разными способами
Средства оценки производительности
Диагностика проблем на уровне СУБД. Сценарий
Важно понимать, что:Разные планы - один результат запроса - за разное времяSQL сервер выбирает план на основании:
Текущего наполнения информационной базыСтатистики распределения значений в таблицах базы данныхСложности выполнения различных операцийПредположений относительно количества записей по условиям запросаи т.д.
Кроме того на выбор плана может повлиять:Конфигурация компьютера, на котором работает SQL сервер:
– Количество процессоров– Объем оперативной памяти
Воздействовать на оптимизатор SQL сервера можно только косвенным образом
Сценарий диагностики проблем на уровне СУБД:Записать трассировку текущих обращений к базе данных (SQL Profiler)Просмотреть трассировку, обращая внимание на запросы, которые выполнялись в течение длительного времениПроанализировать планы выполнения «медленных» запросов, обращая внимание на следующие операции:
Table ScanNested Loops
Средства оценки производительности
Table Scan
Действие Table Scan свидетельствует о неоптимальной работе запроса, если:
TotalSubtreeCost достаточно великТаблица содержит большое количество записейКоличество возвращаемых записей незначительно
Опасность Table Scan в том, что время выполнения напрямую зависит от количества записей в таблице
Table Scan выполняется SQL сервером, если:Не существует подходящего индексаИндекс не обеспечивает достаточной селективностиВ запросе участвует большое количество полей, которые не содержатся в данном индексеА так же в результате ошибки оптимизатора
Подходящий индекс для запроса должен:В первой позиции иметь поле, отбор по которому значительно сократит количество перебираемых записей таблицыВ остальных позициях индекса содержать большую часть (желательно - все) поля, которые используются в запросе
Добавление индекса может замедлить операции модификации данных!
Средства оценки производительности
Nested Loops
Операция Nested Loops свидетельствует о неоптимальной работе запроса в том случае если
Один из объединяемых подзапросов выполняется многократно (Executes > 1)
Опасность этого действия заключается в том, что время его выполнения напрямую зависит от количества записей, которые вернет первый из объединяемых запросов
Nested Loops хорошо работает только в том случае, еслиОдин из подзапросов возвращает мало записей, удовлетворяющих условию объединения
Nested Loops – самый простой способ объединения двух таблиц
SQL сервер может выбирать план с Nested Loops, если:Нет актуальной статистикиВ запросе использованы сложные конструкции, включающие подзапросы и объединения подзапросовА так же в результате ошибки оптимизатора
Средства оценки производительности
Оптимизация запроса. Сценарий.
Желательно добиться устойчивой воспроизводимости ситуации. Для этого используйте:
Журнал регистрации Режим замера производительности
Сценарий оптимизации:Выполните реиндексацию таблиц информационной базыПопытайтесь подобрать индекс, подходящий для выполнения запроса:
Воспользуйтесь «Index Tuning Wizard» (ITW)Средствами конфигуратора создайте индекс в соответствии рекомендациями ITWЕсли ITW не дает рекомендаций, то запрос невозможно оптимизировать при помощи дополнительной индексацииПодходящий индекс не всегда может быть создан средствами 1С:Предприятия 8.0.
Попытайтесь переформулировать запрос:Старайтесь избегать сложных конструкций в запросах. В частности– «Многоэтажных» вложений в подзапросах– Объединения подзапросов.
Попробуйте упростить запрос даже ценой его кажущегося «ухудшения»
Средства оценки производительности
Заключение
Диагностика проблем и оптимизация приложения возможна на различных уровнях
Большая часть проблем решается при помощи:Следования рекомендациям и стандартам разработки
Нагрузочного тестирования во время разработки
Оптимизации алгоритмов на уровне конфигурации
В редких случаях требуется анализ приложения на более низком уровне, в частности на уровне сервера SQL
Анализ на уровне сервера SQL требует знания принципов работы MS SQL Server 2000 и владения SQL Profiler
Семинар партнеров фирмы «1С»Семинар партнеров фирмы «1С»
Фирма «1С»
30 сентября – 2 октября 2005 г.
Спасибо за внимание!Спасибо за внимание!