Семинар партнеров фирмы «1С»
Фирма «1С»
30 сентября – 2 октября 2005 г.
Средства оценки
производительности
приложений на платформе
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 Scan
Nested 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С»
30 сентября – 2 октября 2005 г.
Спасибо за внимание!

средства оценки производительности

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

Editor's Notes

  • #5 Диагностирование проблемы: Пользователь жалуется на недостаточную производительность при проведении документа. Проблема диагностирована на уровне 1. Дисковая подсистема сервера SQL не справляется с нагрузкой. Проблема диагностируется на уровне 5. Локализация проблемы: Обнаружен медленный запрос в обработчике проведения документа. Проблема локализуется на уровне 2. Обнаружен выбор неправильного плана при выполнении запроса SQL сервером. Проблема локализуется на уровне 4.2 Локализация проблемы: Отказаться от работы с этим документом (решение на уровне 0). Переформулировать медленный запрос таким образом, чтобы он стал работать быстрее (решение на уровне 2). Изменить SQL, который генерирует платформа таким образом, чтобы подобные запросы работали быстрее (решение на уровне 3).