Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Оптимизируем производительность блока Казначейство

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for Lamoda Tech Lamoda Tech
December 27, 2024

Оптимизируем производительность блока Казначейство

Алексей Литонов, старший 1С-разработчик

В первый платежный день после запуска мы столкнулись с интересными проблемами в производительности. В выступлении поделимся этими кейсами и решениями, например, в блоке по обмену с банком и в длительных операциях.

Avatar for Lamoda Tech

Lamoda Tech

December 27, 2024
Tweet

More Decks by Lamoda Tech

Other Decks in Programming

Transcript

  1. О чем доклад? Производительность блока «Казначейство» Производительность блока «Длительные операции»

    Подключение 1С: Монитор 1 2 О проблемах производительности в 1С:УХ при внедрении и способах их решения 3
  2. О чем доклад? Производительность блока «Казначейство» Производительность блока «Длительные операции»

    Подключение 1С: Монитор 1 2 О проблемах производительности в 1С:УХ при внедрении и способах их решения 3 Я бы сам хотел посмотреть такой доклад перед запуском
  3. • Снижение доли трудоемких, рутинных операций сотрудников за счет автоматизации

    • Замещение импортного программного обеспечения • Завершение процесса миграции на новую платформу ERP • Обеспечение базы для внедрения МСФО, бюджетирования (контроля) и непрямых закупок. Немного контекста Наши фокусы
  4. Производительность блока «Казначейство» Первый платежный день: Система не может за

    адекватное время прочитать и обработать весь объем данных. Выписки читаются около часа, грузятся по 6-8 часов. В Axapta они же грузились 1-2 часа.
  5. Производительность блока “Казначейство” Первый платежный день: Система не может за

    адекватное время прочитать и обработать весь объем данных. Выписки читаются около часа, грузятся по 6-8 часов. В Axapta они же грузились 1-2 часа. Проблема 1: Чтение файла банковской выписки Проблема 2: Загрузка данных в систему Обработка “Обмен с банком”
  6. Проблема 1: Чтение файла банковской выписки Проблема 2: Загрузка данных

    в систему Производительность блока “Казначейство” Обработка “Обмен с банком” Первый платежный день: Система не может за адекватное время прочитать и обработать весь объем данных. Выписки читаются около часа, грузятся по 6-8 часов. В Axapta они же грузились 1-2 часа. Решение: Переработали функционал под себя ;)
  7. При чтении файла, по каждой секции документа система: • получала

    значение необходимой для процесса константы • выполняла запрос получения учредителей по организации Что, в общем, занимало > 50% времени. Чтение файла банковской выписки Кейс 1
  8. При чтении файла, по каждой секции документа система: • получала

    значение необходимой для процесса константы • выполняла запрос получения учредителей по организации Что, в общем, занимало > 50% времени. Чтение файла банковской выписки Кейс 1 Решение: использование модулей с повторным использованием возвращаемых значений
  9. Обработка загруженных данных выписки • Основная проблема: много документов обрабатываются

    в один поток • Проблема №2: ожидания на блокировках при записи в Регистры Накопления • Проблема №3, но неочевидная: Длительные операции Проблемы Кейс 2
  10. Обработка загруженных данных выписки • Основная проблема: много документов обрабатываются

    в один поток • Проблема №2: ожидания на блокировках при записи в Регистры Накопления • Проблема №3, но неочевидная: Длительные операции Проблемы Решения Выносим выполнение создания документов в Длительные операции (БСП) Кейс 2
  11. Обработка загруженных данных выписки • Основная проблема: много документов обрабатываются

    в один поток • Проблема №2: ожидания на блокировках при записи в Регистры Накопления • Проблема №3, но неочевидная: Длительные операции Проблемы Решения Выносим выполнение создания документов в Длительные операции (БСП) Включаем разделение итогов Кейс 2
  12. Обработка загруженных данных выписки • Основная проблема: много документов обрабатываются

    в один поток • Проблема №2: ожидания на блокировках при записи в Регистры Накопления • Проблема №3, но неочевидная: Длительные операции Проблемы Решения Выносим выполнение создания документов в Длительные операции (БСП) Включаем разделение итогов Тратим 3 дня на анализ проблемы … Кейс 2
  13. • Ставим в константе “Количество потоков длительных операций” нужное нам

    количество потоков • Запускаем создание документов через ДлительныеОперации.ВыполнитьФункциюВНесколькоПотоков() На тестовом контуре — все отлично, на проде все тоже, но до определенного момента… Производительность блока «Длительные операции»
  14. Производительность блока «Длительные операции» Если все потоки заняты созданием документов

    по банковской выписке, и запускается типовая операция с многопоточностью то в системе резко растет число процессов фоновых заданий, появляются дубли документов, а CPU на СУБД покидает чат. Проблема Редактирование реквизитов Групповая пометка удаления Кейс 3
  15. Производительность блока «Длительные операции» Если все потоки заняты созданием документов

    по банковской выписке, и запускается типовая операция с многопоточностью то в системе резко растет число процессов фоновых заданий, появляются дубли документов, а CPU на СУБД покидает чат. Проблема Редактирование реквизитов Групповая пометка удаления Решение Решаем переводить все на подсистему «Менеджер потоков» Кейс 3
  16. 3 поток 2 поток 1 поток • Система распределяет по

    потокам данные, которые надо обработать • Контроль потоков менеджером • Количество потоков и количество элементов порции контролируется при старте менеджера Подсистема «Менеджер потоков» Кейс 3 Док9 Док7 Док6 Док4 Док2 Док5 Док3 Док8 Док1
  17. Последняя проблема: оптимизация отображения списка документов к отправке в банк.

    Для подготовки списка из 9000 строк системе требовалось почти 8 минут. Обмен с банком. Список документов к отправке Проблема Кейс 4
  18. Последняя проблема: оптимизация отображения списка документов к отправке в банк.

    Для подготовки списка из 9000 строк системе требовалось почти 8 минут. Обмен с банком. Список документов к отправке Проблема Кейс 4 Проверка корректности заполнения расчетных счетов
  19. Обмен с банком. Список документов к отправке Кейс 4 Проверка

    корректности заполнения расчетных счетов
  20. Последняя проблема: оптимизация отображения списка документов к отправке в банк.

    Для подготовки списка из 9000 строк системе требовалось почти 8 минут. Обмен с банком. Список документов к отправке Проблема Кейс 4 Проверка корректности заполнения расчетных счетов. Добавили свертку, индексы, получили обработку за 25 секунд. Решение
  21. Нужно видеть метрики и анализировать их в реальном времени Провели

    анализ существующих решений Выбрали 1С: Монитор За день подключили и настроили алертинг в корпоративный мессенджер Пачка Мониторинг производительности 1 2 3 4
  22. Если стандартные решения не удовлетворяют требованиям, не бойтесь вносить изменения,

    но делайте это осознанно Проведение нагрузочных тестов до запуска проекта 1 2 4 Рекомендации по производительности
  23. Внедрение системы мониторинга с возможностью настройки алертов — критически важный

    шаг. Это позволяет не только оперативно реагировать, но и предотвращать появление проблем Если стандартные решения не удовлетворяют требованиям, не бойтесь вносить изменения, но делайте это осознанно Проведение нагрузочных тестов до запуска проекта 1 2 3 Рекомендации по производительности
  24. Внедрение системы мониторинга с возможностью настройки алертов — критически важный

    шаг. Это позволяет не только оперативно реагировать, но и предотвращать появление проблем Если стандартные решения не удовлетворяют требованиям, не бойтесь вносить изменения, но делайте это осознанно Проведение нагрузочных тестов до запуска проекта 1 2 3 Рекомендации по производительности