Оптимизация производительности информационных систем Баркетов Павел Технический директор Компания «Софтпоинт» Давайте познакомимся • barketov@softpoint.ru • Изучаю проблемы производительности и способы их решения с 2005 года. • Другие направления: - Онлайн обмен данными между БД, в том числе 1С 8. - Балансировка нагрузки и кластерные архитектуры информационных систем. ВЫ? • Разработчики и администраторы 1С • Архитекторы приложений? • Руководители проектов? • Люди, интересующиеся проблемами производительности? Проблемы производительности • Легко моделируемые проблемы (Описана технология решения, решение делается обычно собственными силами) • Непостоянные и непредсказуемые проблемы. (Хаотично появляются, сложно выявить закономерности, не понятно как решать) • Предсказуемые проблемы, но сложно решаемые. (Распределенные дисковые хранилища, распараллеливание процессов, кластера) Откуда «они» возникают? Плохое качество контроля за основными параметрами. Быстрый рост бизнеса, инфраструктура не успевает. При внедрении нового функционала не проверяется степень влияния на информационную систему. С чем придется столкнуться при решении? Первая особенность • «Узкие места информационной системы скрывают другие узкие места» С чем придется столкнуться при решении? Вторая особенность Проблемы производительности неравномерно распределены по времени С чем придется столкнуться при решении? Третья особенность • Наибольшая часть проблем сосредоточена в ограниченном количестве мест С чем придется столкнуться при решении? Четвертая особенность • Субъективное мнение пользователей • Объективная оценка - Анкетирование, интервьюирование - Шкала удовлетворенности - Реальный отклик системы - Реальная длительность операций - Количество ошибок Как вести проекты по оптимизации? Требование 1 • Непрерывный качественный мониторинг за всеми параметрами системы без дополнительной нагрузки. - Параметры всех узлов информационной системы. - Инструмент для анализа. Как вести проекты по оптимизации? Требование 2 • Проект идет итерационно (строго поэтапно), на каждом этапе оптимизируется один пласт проблем. Важно: Нельзя оптимизировать все узкие места сразу!!! (Они перераспределяться после очередной итерации) Как вести проекты по оптимизации? Требование 3 • Поиск первопричины падения производительности. Осознание того, что трудозатраты на поиск значительно больше, чем на исправление. Как вести проекты по оптимизации? Требование 4 • Все рекомендации по настройкам, по изменению архитектуры должны быть аргументированы. Нельзя полностью полагаться на базу знаний, «высший пилотаж» - используя знания, проверить и выработать обоснования на данных своей информационной системы. Как вести проекты по оптимизации? Необходимость 5 • Нельзя допустить оптимизации ради оптимизации (четко знать предполагаемый эффект). • При анализе строить графические представления данных (гораздо проще выявить закономерности, зависимости). Предпосылки к оптимизации Блокировочного механизма • Ошибки на событиях блокировок (timeout, deadlock). • Увеличение (по сравнению с однопользовательским режимом) длительностей транзакций (проведение документов) • Недозагруженность ресурсов (CPU, Disk). Предпосылки к оптимизации Конфигурации 1С • Большая длительность выполнения операций в 1С. Предпосылки к оптимизации Посредством параллельных вычислений • Длительная операция 1С. • Недозагруженность аппаратных ресурсов. • В операции есть набор «независимых» друг от друга действий. Мониторинг производительности PerfExpert Непрерывный контроль ситуации в информационной системе Мониторинг производительности PerfExpert • Информация о нагрузке MS SQL запросами 1С (строки кода 1С). • Информация об ошибках у пользователей и местах возникновения в коде. Мониторинг производительности PerfExpert • Замеры длительностей основных операций в 1С и получение времени отклика. Мониторинг производительности PerfExpert • Настройки системы для администратора. • Сведения для регламентного обслуживания. • Многочисленные отчеты. Мониторинг производительности PerfExpert Анализ и воспроизведение запросов 1С Мониторинг производительности PerfExpert Анализ серверных вызовов Практический пример Цель: показать один из способов анализа типовой проблемы производительности и эффективные способы решения. Предпосылки: жалобы на «торможение» операций у пользователей. Первичный анализ: показал, что очень сильно загружен физический диск, где находится рабочая БД 1С. Первый шаг Вариант быстрого решения: купить новый диск с улучшенными характеристиками. «Эффективность» для диска: уменьшение очереди диска в несколько раз. Эффективность решения проблемы: практически нулевая (пользователи не заметили разницы). Для максимальной эффективности: необходимо проанализировать почему диск загружен??? Например, он загружен, потому что данные не задерживаются в cache MS SQL. Первый шаг Второй шаг Вариант быстрого решения: увеличить объем оперативной памяти. Эффективность решения проблемы: низкая, так как это решение лишь скроет проблемы. В дальнейшем проблема может стать еще острее. Для максимальной эффективности: следует посмотреть, какие запросы (виды запросов) приводят к частому «выдавливанию» страниц данных из cache MS SQL. Второй шаг Третий шаг Вариант решения: оптимизация найденных запросов 1С SQL (перестройка запросов, индексация, виртуальные таблицы и прочее). Эффективность решения: максимальная, так как оптимизация запросов 1С приведет к уменьшению нагрузки на сервер СУБД MS SQL, cache MS SQL будет эффективно работать и нагрузка на физический диск, обусловленная избыточным чтением данных с него, уменьшится в десятки раз. Перспективные решения Вопросы Спасибо за внимание!!!