Альтернативные технологии нагрузочного тестирования серверной части кода прикладных решений на платформе 1С

Публикация № 856585

Администрирование - Производительность и оптимизация (HighLoad)

Евгений Филиппов знакомит с альтернативными технологиями нагрузочного тестирования серверной части кода прикладных решений на платформе 1С. Он рассказывает об узких местах традиционной технологии нагрузочного тестирования и методах их обхода путем переноса работы с клиентских соединений на фоновые задания и изменения способа управления сеансами. Также автор приводит примеры с реальных проектов, подтверждающие жизнеспособность предложенных технологий.

Примерно год назад коллеги задали мне вопрос: «Как я мог бы выразить свою работу одним словом?». Тогда я на этот вопрос ответить с ходу не смог, довольно долго думал, но решение не приходило.

На слайде я перечислил те определения, которыми я сам себя мог бы охарактеризовать: я экономлю людям время, экономлю ресурсы заказчикам, делаю одно, второе, третье…, но в качестве ответа на этот вопрос все это не подходит.

Но однажды мы с дочкой шли мимо Сеченовского института, и я ей стал рассказывать про ту работу, которую мы проделали для них – про то, что нам надо было заставить их систему работать в тех условиях, в которых она никогда ранее не работала. И дочка мне сказала: «Папа, ты же работаешь новатором. Я смотрела про них мультфильм».

Этот ответ, действительно, правильный. Ведутся дискуссии о том, насколько корректно «изобретать велосипед», если можно «погуглить» в «Яндексе». С моей точки зрения изобретательность предпочтительнее информированности. Как только человечество разучится изобретать, оно вымрет, ведь чтобы изобретать, надо все-таки тренироваться.

Если говорить еще о моих работах, то я являюсь автором книги «Настольная книга 1С:Эксперта по технологическим вопросам», а также действительно занимаюсь всем тем, что написано на слайде.

Узкие места традиционной технологии нагрузочного тестирования

 

На конференции уже поднимался вопрос о том, что технологии нагрузочного тестирования достаточно дороги. Мы с этим вопросом столкнулись еще в 2009 году. Восемь лет назад в 20-х числах сентября мы проводили первое в истории нагрузочное тестирование «1С:УПП» на 1000 пользователей в одной информационной базе.

На слайде представлена модель, которую нам тогда пришлось изобрести. Эта модель отличалась от существующих на тот момент стандартов – она определила дальнейшее развитие нагрузочных тестов.

Как оказалось, самое мощное оборудование потребовалось не для сервера 1С и не для сервера СУБД, а для того, чтобы запустить 1000 клиентов. Конечно, это было обычное приложение и толстые клиенты, которые запрашивали под себя существенно более высокие требования к ресурсам, чем те, которые необходимы для тонких клиентов. Но, тем не менее, мы тогда на себе прочувствовали, насколько много ресурсов отнимает запуск клиентов.

Еще потребовался полный комплект лицензий. Основная проблема, с которой мы тогда столкнулись, – это производительность аппаратного ключа, т. е. именно он стал тормозом, который довольно долго не давал нам продвинуться дальше. Но мы его, в конце концов, победили и заставили работать.

Надо отметить, что аппаратный ключ, кроме своего физического носителя имеет еще одну характеристику – это стоимость. Достаточно сложно обосновать покупку 1000 дополнительных лицензий (помимо продуктива), которые потребовались нам для нагрузочного тестирования на 1000 клиентов.

В конечном итоге, мы «уперлись» в возможности типового решения «Тест-центр», которое использовалось тогда для запуска нагрузочного тестирования. Дело в том, что основное время тестирования уходило не на прогон нагрузочного теста, а на запуск клиентов. Тест, который мы тогда проводили, должен был продержаться примерно около часа, но чтобы его запустить, мне примерно четыре с половиной часа нужно было запускать клиентов. Я научился запускать их разными способами, но быстро это делать не получалось. Потом мы это улучшили, но все равно оказывалось, что технологическая оснастка, с которой приходилось работать, выставляет нам нашу же проблему. Мы пытаемся оптимизировать наше решение, чтобы бизнес-процессы клиента выполнялись за отведенное время, а у нас самих не получается оптимизировать наш инструмент для нагрузочных тестов так, чтобы они выполнялись за отведенное время.

 

С этой ситуацией я вновь столкнулся два года назад в командировке в Мирном, когда нам за две недели нужно было выполнить нагрузочное тестирование системы. Мне стало очевидно, что мы за это время не успеем выполнить наш рабочий план, потому что возникало «бутылочное горлышко» – основные ресурсы и время тратились на запуск клиентов, а тестировать нам надо было серверную часть кода прикладного решения.

Кроме этого, мы не раз замечали, что при превышении некоторых параметров платформа входит в нестабильный режим. У меня даже иногда возникали мысли, что мы неправильно измеряем требования к центрам обработки данных. Мы стараемся их измерять в установившемся режиме, когда все работает, но вдруг случается нехватка какого-то ресурса, и система входит в состояние «турбулентности». В этом случае запас прочности, который имеется в системе, должен существенно отличаться от того, что требуется для работы в установившемся режиме.

В одном из докладов конференции уже говорилось о том, что иногда «тормозом», который не дает системе развиваться дальше, становится сама система управления. В частности, в условиях вхождения системы в нестабильное состояние централизованное управление с помощью COM-соединителя, используемое в традиционной технологии нагрузочного тестирования, становится одним из первоочередных узких мест.

Все это, рано или поздно, можно было бы победить, но у нас было мало времени. И, поскольку эти ситуации не характерны для продуктива (все эти проблемы нам создавала технологическая оснастка, с которой мы работали), нам нужно было в первую очередь нормализовать наши бизнес-процессы. Ну а потом, когда мы их вывели в нормальный режим, то уже смогли решать задачи заказчика.

 

Для чего нужен нагрузочный тест?

Что такое нагрузочный тест? Это, в первую очередь, модель, которая используется для двух задач.

  • Первая – многопользовательское функциональное тестирование. Оно не так широко распространено, как однопользовательское. Были попытки сделать многопользовательское тестирование стандартом разработки, но в силу того, что это – дорого, реализовать это удалось далеко не везде.
  • Вторая – ресурсное тестирование, когда нас просят посчитать, сколько оборудования, человеко-часов и времени потребуется на проведение каких-то операций.

Что надо сделать партнеру для проведения нагрузочного теста? Взять и запустить какой-то код в большом количестве сеансов. Он, в основном, проводит многопользовательское функциональное тестирование, особенно если речь идет о работах на регулярной основе. Практически, он тестирует серверную часть кода – записать документ или набор записей, выполнить запрос.

Спрашивается, для чего в таком случае нужно поднимать клиентов? Ответ – ни для чего, в таком нагрузочном тестировании клиентские соединения не нужны.

 

Обход основных узких мест путем переноса работы с клиентских соединений на фоновые задания

Для поиска «узких мест» прикладного решения я сначала хотел заняться построением какой-то имитационной модели, но потом в голову пришла мысль, что можно использовать сервер для запуска фоновых заданий по созданию и проведению документов. При этом сразу появляется множество бонусов.

  • Во-первых, фоновое задание не требует клиентских лицензий. Таким образом, стоимость теста падает на полную стоимость лицензий.
  • Во-вторых, фоновые задания существенно быстрее запускаются. В нашем случае первая тысяча фоновых заданий запускалась практически мгновенно. Дальше их запуск происходил медленнее, но это все равно было на порядки быстрее, чем запускались клиентские соединения.
  • В-третьих, как оказалось, для фоновых заданий не нужно большое количество ресурсов. Если для запуска тысячи клиентских приложений 1С нам нужно примерно 128 Гб оперативной памяти и хотя бы 32 ядра, то для запуска тысячи фоновых заданий нам ничего из этого не нужно. Обычный сервер на 8 ядер с 16 Гб оперативной памяти вполне справляется с этой задачей.

Стандартный нагрузочный тест, который входит в состав «КИП», измеряет способность сервера запускать клиентские приложения, а при данной технологии работает именно серверная часть кода.

 

Изменение способа управления сеансами

Чтобы распараллелить выполнение, многие функции можно выполнять децентрализованно, т.е. обработку, под руководством которой работает клиент, можно сделать достаточно умной.

Централизованно клиенту даются только 2 задания.

  • Первое – это начинать выполнять тестовые действия – допустим, начинать проводить документы или ждать чего-то. Эти действия обычно прописаны в какой-то обработке.
  • Второе – что этого клиента можно выгружать (завершать его сеанс).

Все остальное можно сделать децентрализованным и отдать на откуп клиенту. В этом случае мы получаем существенно более надежную схему. Если отвалился клиент – ничего, запустим нового. Если стартовало не 1600 клиентов, 1580 – ничего, мы даем команду начать тесты, и 1580 клиентов, которые к этому моменту запустились, нормально продолжают работу. В данном случае перфекционизм не нужен. За счет этого мы сильно экономим время.

 

Техническая реализация альтернативной технологии

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

  • В третьем столбце описано, как работает обычный алгоритм в «Тест-центре».
  • Во втором столбце описано, как это сделали мы. Например, команду на запуск теста мы сделали просто переключением константы. При тестировании на большое количество пользователей этот механизм оказался значительно более простым и надежным.

Что надо сделать клиентам после запуска? Им надо в конкурентном режиме разобрать номера. На слайде представлен код. Берем, запускаемся, у каждого свой номер.

А далее, когда вам известен порядковый номер каждого рабочего места, клиенту надо просто дождаться команды на начало работы теста.

Аналогично подается команда на завершение работы теста, но с некоторой паузой, чтобы клиенты успевали отработать, чтобы не было конфликтов и блокировок, и чтобы нигде не возникало ненужных очередей.

Дальше по каждому номеру пользователя однозначно определяется имя обработки с определенными параметрами, которую надо запустить.

Для этого используется регистр сведений «БИТ_НастройкаТеста», куда записывается номер пользователя (например, 189) и выполняемая обработка («Тест_5»).

Далее вызывается метод «Выполнить», куда передается имя обработки и параметр «Номер пользователя».

Больше на клиент ничего не передается, и, таким образом, клиент находится в полностью независимом полете. Он получил имя процедуры и выполняет ее.

Эту процедуру можно сделать сколько угодно умной. Это позволяет дозапускать клиентов и делать так, чтобы клиенты были полностью независимыми, и чтобы тест начинался при любом количестве запущенных клиентов.

Еще одна технология, которую удалось обкатать – это независимость настроек теста от метаданных.

В традиционном тесте обычно используется какой-то эталонный документ, который надо скопировать, а потом эту копию провести, распровести или еще что-то с ней сделать.

На заполнение такой тестовой базы может уйти два с половиной человеко-месяца. При этом миграция документов из одной тестовой системы в другую невозможна. Если вы делаете обновление релиза или каким-то образом серьезно поменяете код прикладного решения, то документы из одного места в другое уже не перенесутся.

Но если хранить описания документов в регистре сведений – так, как это представлено на слайде, документы можно будет без проблем переносить в другую тестовую систему.

Обратите внимание, что табличные части сохраняются в хранилище значений, а основные реквизиты документов хранятся в реквизите с типом «Любая ссылка». Как это организовано, можно увидеть на следующем слайде.

Например, первая роль, первый пользователь с первым номером.

Документ «Регистрация цен номенклатуры поставщика», название реквизита «ДокументОснование» и дальше – значение реквизита.

С помощью этого регистра мы можем набирать любое количество различных документов. Набирали до 200 000, и все было нормально.

И главное, этот механизм обеспечивает безболезненную миграцию с одной базы в другую. Если мы ERP 2.2 обновим на релиз ERP 2.3, то, скорее всего, перетащив этот регистр, мы увидим полностью заполненные готовые базы для теста.

 

Нюансы отдельных настроек

Еще очень важная настройка – «ПодключитьОбработчикОжидания».

Традиционные технологии предполагают работу в модальном синхронном режиме. У такого режима есть значительное неудобство: если вы запустили клиентское приложение, и оно пошло выполнять предназначенные ему действия, вы с этим «мертвым» окном уже ничего не сделаете, пока все действия не будут выполнены.

А в нашем случае, даже если у нас все-таки запускаются клиентские соединения, а не фоновые задания, и нам надо открывать формы документов, то при переходе с формы одного документа на другую (т.е. мы сначала проводим «Реализацию», потом проводим «Поступление»), мы используем подключение обработчика ожидания. Это делает окно «живым». «Реализация» проведена, окно живое, мы можем в приложении параллельно что-то делать, а потом через определенное время запускается проведение «Поступления». Это технология тоже очень сильно помогает.

В фоновом задании у нас используется «КИП.Пауза» – там без этого не обойтись (или надо свой аналогичный скрипт писать).

Результаты тестирования:

  • В нашем случае у нас был проведен большой тест на 15 010 фоновых заданий.
  • Тест продолжался восемь часов.
  • За это время провелось больше 180 000 документов.
  • Запуск фоновых заданий занял примерно час. Для примера скажу, что я не представляю, сколько времени потребовалось для того, чтобы запустить 15 000 клиентских приложений 1С. Это было бы очень долго, и потребовалось бы немереное количество оборудования.

Особенности настроек кластера – тема достаточно серьезного тюнинга. Те настройки кластера, которые представлены на слайде выше, мы подбирали вручную.

  • Почему-то более 90 рабочих процессов у нас запустить не получилось.
  • Учитывая ограничения на память, на каждый из запущенных рабочих процессов подобрали количество соединений в 170.
  • При этом порадовало, что для обеспечения технологических функций такого большого теста нам хватило 5 лицензий.

 

Подтверждение жизнеспособности предложенных технологий

Теперь расскажу про то, какую нагрузку это выдержало.

Первой ласточкой, когда мы начали это собирать, было тестирование для компании «АЛРОСА» в Мирном. Тогда нам удалось очень быстро собрать прототип системы, реализующей задачу по выполнению нагрузочного тестирования для заказчика, и упростить дальнейшую оптимизацию кода прикладного решения. Мы поняли, что наша идея начинает работать.

Дальше для нас было очень знаковое тестирование в «Норильском никеле». Знаковое – потому что технология, которую мы разработали, оказалась тиражируемой. Каждый гениальный программист способен написать свой гениальный код. Но гениальность этого кода иногда может оценить только он сам, потому что другие могут просто не понять, что он хотел. Люди, которым мы передали эту технологию, сказали, что она действительно серьезно облегчила их работу. Это при том, что тестирование проводил не я, и обучались они «с нуля». Тиражируемость технологии для нас очень важна, потому что не всегда можно научить людей работать с тем, что сделали сами. А тут это получилось и получилось хорошо.

Следующий шаг. У нас было желание проверить, сколько наша технология нагрузочного тестирования вообще выдержит, т.е. какие ее реальные пределы. Мы попробовали запустить тестирование на каркасной конфигурации – сначала тысячу потоков, потом десять тысяч, потом 25 тысяч потоков. 25 тысяч получилось запустить на реальном оборудовании. Попробовали запустить 40 тысяч, но система вошла в режим «турбулентности», из которого ее, к сожалению, вывести не удалось. Таким образом, мы считаем, что 25 тысяч соединений в одной базе – это то, что нам удалось сделать с помощью данной технологии. Весь код, представленный на слайдах, работает при таких серьезных стрессовых режимах.

Дальше мы попробовали узнать, как наше тестирование будет работать в ERP, и получили результат в 15 тысяч соединений. Конфигурацию ERP мы выбрали, как образец сложного современного типового решения, на котором можно проверить технологию и заодно определить, нет ли в самом решении каких-либо «узких» мест. Оказалось, что есть. Мы их нашли и передали в «1С». При этом сами убедились, что наша технологическая оснастка работает. И главное – мы провели это тестирование в совершенно вменяемые сроки и в свободное от основной работы время.

 

Гибридные технологии

Хочу привести пример гибридного использования нашей технологии, который позволил протестировать систему на высокую нагрузку, и при этом сэкономить.

Нам говорят, что мы с помощью своей технологии не можем воспроизвести все ситуации, которые могут быть в реальной базе по заданию нагрузочного теста.

Но в проекте для Центрального Банка России у нас использовался прототип гибридного подхода к нагрузочному тестированию:

  • В качестве 820 пользователей работали роботы – сеансы запускались автоматизировано, под ними создавались и проводились документы.
  • И параллельно в системе работали 30 бухгалтеров. Они делали все то, что им требовалось для повседневной работы, и оценивали общую производительность системы. Мы не могли запрограммировать то, что они делали.

Результат, который мы получили, был довольно близок к работе реальной системы, по сравнению с тем, что мы могли бы смоделировать за разумные деньги.

Приведенный пример технологии можно использовать на реальном проекте:

  • с помощью фоновых заданий создаем нагрузку на сервер;
  • нагрузку на клиентские приложения 1С делаем поменьше, т. к. эта проверка дорого стоит;
  • какое-то количество соединений создаем вручную.

Получаем полнофункциональное тестирование системы любого размера.

В заключение хотелось бы сказать, что из всех технологий все слышат почему-то только про нагрузочный тест с помощью фоновых заданий. Это важная технология, но она не единственная, и в конце доклада я еще раз перечислю их все, и их преимущества по сравнению с традиционной технологией. Итак, это:

  • нагрузочный тест с помощью фоновых заданий – нужно меньше лицензий, быстрее запуск, ниже требования к оборудованию;
  • нагрузочный тест с помощью клиентских приложений 1С, работающих в асинхронном немодальном режиме – сохраняется возможность работы в клиентских приложениях, что повышает удобство;
  • децентрализованный способ управления клиентскими приложениями, участвующими в нагрузочном тесте – выше надежность тестовой оснастки, сама она перестает быть точкой отказа;
  • децентрализованный способ управления фоновыми заданиями, участвующими в нагрузочном тесте – то же самое, выше надежность тестовой оснастки, сама она перестает быть точкой отказа;
  • механизм хранения реквизитов и табличных частей всех метаданных, которые надо создавать и использовать в ходе теста, в регистре сведений, что обеспечивает простоту миграции тестовых данных при существенных изменениях конфигурации;
  • гибридные технологии тестирования  – отказ от описания и программирования неформализуемых действий.

И все эти технологии проверены нами на сверхвысокой нагрузке, в условиях ограниченных сроков, бюджета и вычислительных ресурсов. Они, собственно, все и были созданы, чтобы в эти ограничения вписываться.

 

****************

Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2017 COMMUNITY. Больше статей можно прочитать здесь.

В 2020 году приглашаем всех принять участие в 7 региональных митапах, а также юбилейной INFOSTART EVENT 2020 в Москве.

Выбрать мероприятие.

Специальные предложения

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. ivanov660 2093 12.07.18 11:29 Сейчас в теме
Проделана очень серьезная и достойная работа, спасибо за статью.
Есть ряд вопросов. Я так понимаю ставилась задача в некоторой формулировке: "выдержит ли система 1000 соединений или нет".
1. Проводили ли вы моделирование на предельную нагрузку, (т.е. определить пороговые значения, когда система перестает адекватно реагировать) и по каким критериям тогда вы определяли достижения такого состояния.
2. Учитывали ли нагрузку, которую вносят динамические списки, формирование отчетов СКД.
3. Есть ли графики изменения ключевых показателей системы (загрузка проца, очередь сервер, очередь скуль и др) от изменения нагрузки? Интересно было бы посмотреть.
2. metmetmet 77 12.07.18 11:48 Сейчас в теме
Хорошая, полезная статья. Спасибо Вам за это.
Планируете распространять свои наработки в виде готового приложения или расширения?
Передавали пожелания, примеры реализации в фирму 1С для развития их Тест-центра?
Krio2; nvv1970; kalyaka; +3 Ответить
3. Timur.V 66 12.07.18 13:02 Сейчас в теме
Резюме по ролику:
Робот (фоновое задание) создает, например, документы Поступления (для упрощения, больше ничего не умеет). Вы увеличиваете количество роботов, ресурсы кластера 1с заканчиваются. Закончились.
Что вы протестировали?

Тонкий клиент(толстый клиент) = фоновое задание ? Вы рассказываете как не тратить лицензии 1С или как тестировать?
Тонкий клиент(и тем более толстый) тратит ресурсы кластера 1с на получение и отправку данных. Где это в ваших тестах? Вы не учитываете эту нагрузку?
a.doroshkevich; +1 Ответить
4. blackhole321 1164 12.07.18 13:18 Сейчас в теме
На сколько можно понять из статьи, вы имеете обширный экспериментальный материал. Пробовали ли Вы оценить корелляцию между потребляемыми ресурсами (процессор, память, диск, время отклика etc.) и количеством соединений/типом выполняемых операций etc.?
5. HAMMER_59 203 13.07.18 06:49 Сейчас в теме
ИМХО странная какая-то статья. Из-за запуска 1000 клиентских приложений у нас возникли проблемы, и мы решили их не запускать, серверный код протестируем и этого будет достаточно.
Занятно. Проводил я тест у себя на поиск узких мест, в результате выяснилось, что узким местом является ни что иное как взаимодействие клиентской части с серверной, т.е. время работы теста, например, 1 час, из них 30 минут исполнение кода, остальное время уходит на взаимодействие сервера с клиентом, при этом при увеличении количества обращений к серверу на исполнение кода будет уходить все меньшая часть времени.
a.doroshkevich; Dragonim; LordKim; A_Max; ivanov660; newgluk; +6 Ответить
9. nvv1970 26.08.18 16:10 Сейчас в теме
(5) ну мы же все грамотные, мы же понимаем, что такой тест - это тест серверного кода. Все.
Конечно он не выявит задержки на передаче данных между клиентом и сервером, проблем выдачи лицензий или тормозов в вебсервере. Но как частный случай тестирования - вполне хорош и не является изобретенным колесом.
6. Vladimir Litvinenko 13.07.18 16:12 Сейчас в теме
Не хотелось бы придираться к хорошему докладу. Но все же хотелось бы на слайдах известного автора видеть примеры хорошего, а не только производительного кода.

если ... Тогда КонецеслИ   
Если не  ИмяПеременной
если не ИмяПеременной 
вПеременная =  ДругаяПеременная 

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

Потом ведь кто-нибудь приведет пример со слайдов в оправдание того, что "Крутые спецы вот так пишут. И проблемы заказчков решают. Чего ты тут рассказываешь про чистый код и стандарты! Нашелся, граммар-наци. Буду равняться на суперпрофессионалов". Задавят, понимаешь, Вашим авторитетом и примером, и пойдет такое в продуктив при доработке типовых ))
nvv1970; LordKim; boln; +3 Ответить
7. boln 1009 13.07.18 22:56 Сейчас в теме
(6)
Потом ведь кто-нибудь приведет пример со слайдов в оправдание того, что "Крутые спецы вот так пишут. И проблемы заказчков решают. Чего ты тут рассказываешь про чистый код и стандарты! Нашелся, граммар-наци. Буду равняться на суперпрофессионалов". Задавят, понимаешь, Вашим авторитетом и примером, и пойдет такое в продуктив при доработке типовых ))
В сообществе медаль "крутого спеца" заработать очень и очень непросто. А уже только одна отсылка к грязному коду вызовет град насмешек в отношении "крутизны" и "суперпрофессионализма" данного спеца.

Так что вряд ли стоит опасаться распространения небрежного стиля на основании неких слайдов некоего спеца.
8. Steelvan 25.08.18 17:10 Сейчас в теме
(6) Префикс БИТ на что-то намекуе, не ?
10. vasilev2015 1809 11.12.18 17:55 Сейчас в теме
а мне статья понравилась ))
Оставьте свое сообщение

См. также

Исследование технологического журнала 1С при помощи регулярных выражений в блокноте Промо

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Все из тех, кто пробовали сдать на сертификат "Эксперт по технологическим вопросам 1С", сталкивались с методикой ЦКТП - разбор файлов технологического журнала при помощи консоли bash. Я, в свою очередь,внёс изменения в данную методику. Мне хотелось достичь более понятного вида и сфокусироваться на Perl, в качестве предпочтительного средства обработки файлов ТЖ. Вот что из этого вышло:

30.10.2017    27993    0    MrWonder    42    

Выявляем и оптимизируем ресурсоемкие запросы 1С:Предприятия

Производительность и оптимизация (HighLoad) Администрирование СУБД Технологический журнал Структура метаданных v8::Запросы Бесплатно (free)

Обычно предметом оптимизации являются заранее определенные ключевые операции, т.е. действия, время выполнения которых значимо для пользователей. Причиной недостаточно быстрого выполнения ключевых операций может быть неоптимальный код, неоптимальные запросы либо же проблемы параллельности. Если выясняется, что основная доля времени выполнения ключевой операции приходится на запросы, то осуществляется оптимизация этих запросов. При высоких нагрузках на сервер СУБД в оптимизации нуждаются и те запросы, которые потребляют наибольшие ресурсы. Такие запросы не обязательно связаны с ключевыми операциями и заранее неизвестны. Но их также легко выявить и определить контекст их выполнения, чтобы оптимизировать стандартными методами.

24.05.2020    4390    0    DataReducer    22    

[SQL Server] Использование trace flag 9592 для сжатия траффика в кластере AlwaysOn

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Недавно мы столкнулись с проблемой производительности, при которой дополнительная нагрузка, связанная с записью большого массива данных, приводила к существенным задержкам в операциях записи основного траффика. Найденное решение позволило не только уменьшить влияние нового процесса на основной пользовательский трафик, но и существенно снизить сетевой траффик между синхронными репликами кластера.

18.05.2020    1241    0    Aleksey.Bochkov    3    

Эти занимательные временные таблицы

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 Бесплатно (free)

Кое-что интересное о временных таблицах и работе платформы 1С с ними.

06.04.2020    8828    0    YPermitin    0    

Долго открывается конфигуратор Промо

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

В ОС Windows Server 2012 бывает полезно выключать службу Dynamic Fair Share Scheduling (DFSS позволяет балансировать и распределять ресурсы между пользователями), чтобы повысить производительность 1С:Предприятие 8 в ряде случаев.

22.04.2015    39473    0    Gilev.Vyacheslav    1    

Оптимизация запросов 1С посредством индексации временных таблиц. Миф? Тестируем, смотрим, считаем

Производительность и оптимизация (HighLoad) Практика программирования v8 Бесплатно (free)

Появилось свободное время, решил проверить на работе индексацию таблиц. Решил поделиться с Вами результатами исследования. Давайте порассуждаем на эту тему? Часто ли вы пользуетесь индексацией в запросах? Платформа 8.3.16.1224

03.04.2020    2697    0    feva    14    

Как я собрал для себя высокопроизводительный и бесплатный облачный бекенд для 1С на PosgreSQL + PostgREST

Производительность и оптимизация (HighLoad) WEB Интеграция Мобильная разработка Администрирование веб-серверов v8 Бесплатно (free)

В этой статье я расскажу о проблемах бека для мобильных приложений или другого фронта, который требует производительности, быстрой реакции и отказоустойчивости, и как я решил это благодаря opensource проекту PostgREST и СУБД Postgre SQL 12. Проведу простой тест производительности для сравнения 1С с данным решением. Это может быть полезно всем, кто разрабатывает мобильные приложения либо фронтсайд-приложения для 1С на чем угодно - на мобильной платформе или на нативном языке или на Simple UI. И также обзор новых функций SimpleUI для связи с этим бекендом.

31.03.2020    9772    0    informa1555    21    

Многострочный контекст событий

Производительность и оптимизация (HighLoad) Технологический журнал v8 Бесплатно (free)

Разбор технологического журнала с группировкой событий по первой или последней строке многострочного контекста.

31.03.2020    2307    0    vasilev2015    9    

Как можно "положить" SQL сервер с помощью обычной консоли запросов 1С Промо

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Описано как из 1С, с помощью безобидной на первый взгляд обработки, можно сделать неработоспособным SQL сервер. Предложены меры, позволяющие избежать этого.

22.01.2014    65814    0    yuraos    112    

Анализ взаимоблокировок

Производительность и оптимизация (HighLoad) Технологический журнал v8 Бесплатно (free)

Скрипт Bash, который выводит полную информацию взаимоблокировок по технологическому журналу. Не имеет аналогов в отечественных публикациях.

20.03.2020    3561    0    vasilev2015    21    

Многопоточность

Практика программирования Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Увеличиваем скорость загрузки данных в 20 раз. Как следует использовать многопоточность и готовый модуль для внедрения.

18.03.2020    5294    0    kaliuzhnyi    43    

Ускоряем списание партий УПП 1.2 / 1.3 / УТ 10.3 Промо

Производительность и оптимизация (HighLoad) v8 УТ10 УПП1 Бесплатно (free)

Не секрет, что многие пользователи, использующие партионный учет (а таких очень много, даже среди огромных холдингов, несмотря на пропаганду РАУЗ) при больших нагрузках сталкиваются с резким замедлением списания партий.

21.06.2013    52565    0    Антон Ширяев    116    

Планы запросов - это просто! Разбор оптимизаций запросов PostgreSQL на живых примерах

Производительность и оптимизация (HighLoad) v8::Запросы Бесплатно (free)

Проблема быстродействия 1С напрямую зависит от производительности запросов. Но как понять механику работы СУБД с помощью плана запроса? Андрей Овсянкин и Никита Грызлов на конференции Infostart Event 2019 Inception подробно рассмотрели алгоритм работы с планом запроса СУБД PostgreSQL, полученным из технологического журнала, и рассказали, на что обратить внимание, чтобы оптимизировать работу системы.

17.02.2020    7063    0    Evil Beaver    13    

Оптимизатор запросов. Вторая часть

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Продолжение статьи об оптимизаторе запросов. Во второй части мы попробуем создать свой оптимизатор и попутно разберемся с такими вопросами, как: хранение файлов; индексы; статистика.

23.01.2020    5385    0    darkdan77    59    

Улучшаем производительность 1С. Рекомендации

Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Бесплатно (free)

Каждый уважаемый разработчик 1С сталкивался или столкнется с вопросом производительности высоконагруженных систем. В статье агрегирован основной набор рекомендаций, который позволит повысить производительность системы. Эти рекомендации должны быть просто must have по определению.

23.01.2020    6660    0    Kaval88    26    

Сравнение скорости работы 1C+MSSQL и файлового варианта Промо

Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Бесплатно (free)

На форумах постоянно задается один и тот же вопрос: почему 1C+MSSQL медленнее обрабатывает запросы чем файловая? Затем обычно идет «флуд» на несколько десятков страниц. Есть два популярных «течения» в таких форумах — одни говорят что для клиент-серверного варианта это нормально, файловый вариант всегда должен работать быстрее, другие говорят что 1С плохо работает с субд. В результате «баталий и выяснения отношений» на форумах люди расходятся при своих мнения.

19.02.2013    53320    0    Gilev.Vyacheslav    46    

Мониторим производительность с помощью 1С RAS

Инструментарий разработчика Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Подключаемся и анализируем данные через 1С RAS. Необходимо выполнить 5 пунктов и серьезный инструмент мониторинга будет у вас в руках.

19.12.2019    8851    0    ivanov660    16    

Весёлые картинки о работе Performance Monitor на Windows Server 2016 Std по мотивам расследования потери производительности на базе 1С

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Данная публикация посвящена одной особенности Performance Monitor на Windows Server 2016 Std. Как понимать графики Performance Monitor на Windows Server 2016 Std при расследовании проблем в работе 1С.

22.10.2019    6323    0    EugeneSemyonov    11    

Обслуживание баз данных. Не так просто, как кажется

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 1cv8.cf Бесплатно (free)

Считаете, что обслуживание индексов и статистик дело простое? Что ж, это не всегда так.

14.10.2019    15292    0    YPermitin    28    

Параллельные вычисления в 1С 8 Промо

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Решение позволяет ускорять выполнение запросов в 1С 8 в отчетах путем их параллельного выполнения в разных потоках.

11.02.2013    29208    0    gallam99    19    

Мониторинг высоконагруженной системы

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Высоконагруженной системе (более 8000 клиентских сессий) мониторинг необходим. Про опыт использования инструментов для мониторинга – самописной системы информирования, написанной на C#, и конфигурации «Центр контроля качества» в связке с системой отображения данных Grafana, на конференции Infostart Event 2018 Education рассказал Олег Репников.

13.09.2019    8028    0    Repich    5    

Использование Zabbix для сбора информации о серверных вызовах и управляемых блокировках с сервера 1С Предприятия, работающего на платформе GNU/Linux

Администрирование данных 1С Zabbix v8 Бесплатно (free)

Описанные в данном опусе механизмы ни в коей мере не противопоставляются тому, что реализует КИП от 1С или какие-либо другие инструменты (решения)! Это всего лишь еще один взгляд на "проблему", который может быть полезен в некоторых ситуациях.

10.09.2019    16444    0    Sloth    24    

Хранение файлов - как уменьшить размер базы данных

Чистка базы Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 Россия Бесплатно (free)

Хранение файлов в базе 1С можно оптимизировать для уменьшения размера хранимых данных.

09.09.2019    7456    0    2tvad    17    

Ubuntu vs CentOS vs Win2k8 vs Debian: производительность PostgreSQL Промо

Статистика базы данных Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Хотя интернет уже переполнен статьями о "правильной" настройке связки PostgreSQL и 1C 8.2, для подводных камней всегда остается место. При сравнении производительности СУБД PostgreSQL на разных ОС, показатели различаются в разы. Самую большую обиду принесла любимая Ubuntu (человечность). После долгих дней и ночей проведенных за консолью этой ОС, она разочаровала окончательно. Тормоза PostgreSQL в Ubuntu Server. Что с ними делать? Сколько раз можно наступать на грабли?

03.11.2012    41361    0    madmpro    32    

Анализ производительности APDEX

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Отчет для просмотра и анализа замеров производительности в конфигурациях на базе БСП.

31.08.2019    9168    2    YPermitin    7    

Неочевидные проблемы производительности: важность системного подхода при анализе

Производительность и оптимизация (HighLoad) v8 Россия Бесплатно (free)

Часто программисты и 1С-ники сталкиваются с совершенно необъяснимыми на первый взгляд проблемами. Но это потому, что их внимание направлено только на один сегмент системы, а не на всю систему полностью. О том, почему нужно стараться смотреть на ситуацию комплексно, рассказал специалист по производительности компании SOFTPOINT Александр Денисов.

19.07.2019    8024    0    Филин    12    

Ловля блокировок на связке "Microsoft SQL server - 1С"

Производительность и оптимизация (HighLoad) v8 v8::blocking Бесплатно (free)

Материал относится к базам данных на связке «1С - MS SQL Server». Один из способов отлова блокировок в бд 1С . Переход к управляемым блокировкам через режим "Автоматический и управляемый".

16.07.2019    8512    0    fhqhelp    0    

Анти-оптимизация: как мы ускорили запрос в 4 раза, сделав его неоптимальным

Производительность и оптимизация (HighLoad) Практика программирования Решение задач на 1С:Специалист Разработка v8 Бесплатно (free)

В этой статье приведен пример неочевидной "оптимизации" запроса, которая противоречит всем правилам, описанным в книгах для подготовки к сертификации "1С:Эксперт по технологическим вопросам", а также преподаваемым на курсах подготовки экспертов.

02.07.2019    10045    0    igordynets    119    

Ускорение чтения правил обмена в УПП 1.3 в 20 раз!

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Способ оптимизации чтения правил обмена конвертации данных. Может понадобиться при большом размере правил и высокой периодичности обмена.

27.06.2019    8952    0    YPermitin    16    

Хотите снизить нагрузку на процессор сервера в 2 раза?

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

В статье рассмотрено влияние частого запуска регламентных заданий на процессор сервера 1С.

27.06.2019    8377    0    Дмитрий74Чел    6    

Непридуманные истории по оптимизации. История 1

Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Бесплатно (free)

Первая статья из планируемого цикла об оптимизации приложений на базе 1С. Без теории. Одна практика.

13.06.2019    11478    0    Repich    117    

Оптимизация: неэффективные запросы

Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

В большинстве случаев основной причиной медленной работы системы при многопользовательском режиме работы является блокировка данных СУБД (говорим про клиент-серверную версию). Блокировка - это не есть хорошо или плохо, это жизненно необходимая вещь при построении прикладной логики работы системы. Но блокировки таблиц, записей могут быть как вполне законными, так и далеко не всегда оправданными в каждой конкретной ситуации. Одной из самых распространенных причин неоптимальной блокировки ресурсов является некорректное написание запросов.

13.06.2019    5327    0    slayer-ekb    10    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    21519    0    dmurk    144    

За 5 шагов добавляем мониторинг счетчиков производительности серверов MS SQL и 1С

Статистика базы данных Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Мы расскажем и покажем, как добавить данные счетчиков производительности серверов 1С и MS SQL в нашу базу мониторинга за 15 минут. Приведем список наиболее важных из них, опишем основные особенности.

28.05.2019    16730    0    ivanov660    9    

Не думать о секундах свысока...

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Несколько примеров оптимизации типовой конфигурации УТ11. Описанные приемы подходят для многих других конфигураций.

21.05.2019    7264    0    vasilev2015    21    

Альтернативная стратегия управления блокировками

Производительность и оптимизация (HighLoad) v8 v8::blocking 1cv8.cf Россия Бесплатно (free)

Данная публикация освещает одну из альтернативных стратегий блокирования данных на уровне MS SQL Server, которая недоступна средствами 1С, но может быть весьма полезной. Разбирается практический пример.

20.05.2019    6509    0    zhichkin    15    

Как работают управляемые блокировки

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Все типовые конфигурации содержат ошибки, потому как управляемые блокировки в 1С слишком уж "управляемые", при понижении уровня изоляции про некоторые "нюансы" просто забыли. Для создания и эксплуатации качественной системы, которая способна поддерживать транзакционную целостность данных при параллельной работе, информацию в этой статье желательно знать, хотя, конечно, ничего особо нового я не открыл.

29.04.2019    20013    0    comol    198    

Странное потребление места на диске С

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Решение проблемы постоянного роста папки %AppData%/Local/Temp.

26.04.2019    13364    0    kuzyara    12    

Включение встроенного в платформу механизма "Копии базы данных" и использование "Дата Акселератора". Новый стандартный механизм использования баз OLAP в 1С

Производительность и оптимизация (HighLoad) v8 Россия Бесплатно (free)

С версии 1С 8.3.14 в платформе появился новый функционал «Копии базы данных». В данной публикации я хочу рассказать, как включить использование данного механизма в платформе 1с и как его использовать для получения отчетов с копии базы данных, которая может быть вынесена на внешний сервер относительно текущей базы данных, а также как использовать систему «Дата акселератор», в которой база данных целиком размещена в оперативной памяти рабочего сервера кластера серверов «1С:Предприятия».

25.04.2019    12461    0    Elf1k    27    

5 простых шагов и 15 минут на разворачивание инструмента мониторинга проблем производительности базы 1С

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

В этой статье мы разберем механизм использования конфигурации "Анализ технологического журнала" на практике, и всего через 15 минут работы вы получите функциональный, удобный инструмент мониторинга проблем производительности базы 1С.

18.04.2019    26386    0    ivanov660    77    

Как разбить базу на файлы и не сойти с ума

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Разбиение базы данных 1C на файлы и последующее сопровождение. Нюансы, грабли и прочее.

06.04.2019    14310    0    YPermitin    30    

Как одно изменение конфигурации PostgreSQL улучшило производительность медленных запросов в 50 раз

Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Бесплатно (free)

В связи с санкциями и другими событиями сейчас все более и более актуальна тема перевода ПО компаний на отечественное и свободное программное обеспечение. Одной из самых востребанных СУБД на рынке на данный момент является PostgreSQL - надежная, высокопроизводительная и хорошо масштабируемая СУБД, которая является прямым конкуретном таким крупным компаниям с их топовыми продуктами, как Oracle, IBM и Microsoft. Однако каждый, кто переходит на PostgreSQL, сталкивается с трудностями, прежде всего с настройкой и производительностью. Не обошли проблемы с производительностью "слоника" и меня. Предлагаю вашему вниманию перевод статьи "How a single PostgreSQL config change improved slow query performance by 50x" автора Pavan Patibandla, которая мне помогла улучшить производительность PostgreSQL.

18.03.2019    14298    0    w.r.    23    

Простое программное решение проблем с блокировками SQL

Производительность и оптимизация (HighLoad) v8 v8::blocking 1cv8.cf Россия Бесплатно (free)

Описание одного из способов программного решения проблемы блокировок при проведении документов в клиент-серверной 1С.

06.03.2019    8306    0    dmitrydemenew    38    

Производительность сервера 1С и фоновые задания

Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Бесплатно (free)

В падении производительности сервера 1С зачастую виноваты не регламентные / фоновые задания, они выполняют полезную работу. Но задания нельзя оставлять «наедине» с базой.

05.02.2019    16832    0    user715208    38