Но так и быть - рукой пристрастной
Прими собранье пестрых глав,
Полусмешных, полупечальных,
Простонародных, идеальных,
Небрежный плод моих забав,
Бессониц, легких вдохновений,
Незрелых и увядших лет,
Ума холодных наблюдений
И сердца горестных замет.
©А. С. Пушкин. Евгений Онегин
На этом моя серия публикаций о развертывании 1С Предприятие 8.3 на РедОС подходит к завершению.
Получился мини-курс по импортозамещению.
Кто прошел все публикации (и/или видео), тот сможет с минимальными затратами, прежде всего нервов, собрать контур для работы 1С Предприятие 8.3 на РедОС корпоративного уровня.
Надеюсь, ваше время не пропало зря.
Обращайте внимание на даты и номера релизов, все меняется, все течет.
Огромное спасибо всем написавшим как в комментарии, так и в личные сообщения.
Моему поколению, чтобы уронить телефон в унитаз,
надо было сначала оторвать его от стены.
©народный фольклор
Поколению миллениалов, чтобы сдать работу, достаточно запостить фото в соцсети, а мое поколение помнит еще ходовые испытания и военную приемку.
Не хотелось бы превращать статью в собрание цитат Евгения Филиппова, но точнее не скажешь.
"Если вы не проведете нагрузочное тестирование в автоматическом режиме, то его проведут за вас пользователи", с возможно более болезненным результатом.
Тем кто не любит много букв
В этой публикации увидим, как работает балансировка отказоустойчивого кластера 1С из двух серверов, проведем нагрузочное тестирование приближенное к реальности, потом рассмотрим варианты измерения производительности утилитами lunux.
Как тут не вспомнить момент, когда все начиналось в далеком 2019 году статьей
1С и Яндекс.Облако Compute Cloud. Вдоль и поперек, кто хочет ненадолго предаться приятной ностальгии, может перейти по ссылке.
Кто не любит читать вообще, может посмотреть видео.
Остальные, добро пожаловать.
Постановка задачи
Имеем прототип корпоративной windows-linux сети в облаке ©Serverspace.
Контроллер домена, сервер Windows 2012 R2, домен AD уровня Windows 2012. dc.test.loc
Рабочая станция Windows 10. win-cln01.test.loc
Рабочая станция РедОС 8. red8-cln01.test.loc
Сервер 1С РедОС 8 настроенный. red8-srv.test.loc
Сервер 1С РедОС 8 настраиваемый. red-srv.test.loc
Postgres 16 от PostgresPro
1С Предприятие 64-х 8.3.24.1467
все в домене test.loc.
Имя домена *.local не рекомендуют коллеги РедОС.
все по железу 4ГБ RAM 50ГБ SSD 2 Ядра CPU
все развернуто в облаке из оригинальных iso образов производителей для чистоты эксперимента.
Отказоустойчивый кластер с балансировкой нагрузки на двух серверах 1С
Ее и проверим для начала
Балансировка нагрузки в кластере 1С
База для тестирования это типовая Зарплата и управление персоналом 3.1, как самая распространенная из баз 1С.
В нее установлено расширение, помогающее понять, на каком из двух серверов кластера происходит обработка серверного вызова.
Принцип его работы: в серверном вызове создается временный текстовый файл, в него системная команда hostname пишет данные, 1С их выводит на форму.
В сценарии запуска нагрузочного тестирования устанавливаем флажок "Пауза после запуска ВРМ", поэтому виртуальные рабочие места откроются, но не начнут работу до нажатия кнопки подтверждения.
Пройдя по окнам приложений 1С, можно увидеть, что плюс-минус распределение по серверам равномерное, на red8-srv чуть больше.
Его и нагрузим утилитой stress-ng на 5 минут.
В консоли администрирования 1С видно, как начала падать доступная производительность
После этого можно наблюдать миграцию серверных вызовов на менее загруженный red-srv, что и требовалось доказать.
После этого можно запускать само нагрузочное тестирование.
Нагрузочное тестирование при помощи 1С:Корпоративный инструментальный пакет
Очень тонкий момент. Как вы яхту назовете...
Чем ближе к реальности удастся создать прототип тестовых обработок, тем спокойнее будет ваша жизнь в продакте.
Полностью имитировать рабочий контур получится навряд ли, в силу неоднородной по времени рабочего дня специфики работы пользователей, примеры тут вспомнит каждый из своей практики, общеизвестный это массовое формирование расчетных листков, когда на телефоны упала СМС о зарплате.
- Хороший путь это взять статистику по количеству документов за определенный период, например за прошлый год, обработок подобного рода достаточное количество и попробовать эмулировать тестовыми обработками похожую нагрузку, только сжатую во времени.
Иными словами, если пользователи в течение года набили 1000 приемов на работу, 1000 увольнений и 10000 табелей рабочего времени, то их и надо пропорционально заносить во время теста, а не ввести 30 корректировок зарплаты и отчитаться об успехе.
Он потребует написания этих тестовых обработок для заведения нужного количества документов и справочников. - Если такой статистики нет, но есть желание сравнить старый/новый контуры или получить значения для некоей средней базы 1С, можно взять из КИП стандартный нагрузочный тест.
Да и в любом случае его не помешает прогнать для начала. - Промежуточный путь это взять готовые тестовые обработки рабочих мест кадровиков, расчетчиков и т.п. из раздела Обновления -> 1С:Корпоративный инструментальный пакет -> Дополнительные материалы на ИТС.
Их потребуется доработатьнапильникомдля интеграции в типовую базу ЗУП с типовым же расширением нагрузочного теста из комплекта КИП.
Никогда такого не было и вот опять...
В любом случае это лучше, чем писать с нуля, заодно можно понять логику тестирования.
Обработки, доработанные мной, я по понятным причинам не могу выложить в общий доступ, но, если вы напишете мне с корпоративного почтового адреса, не франчайзи, то поделюсь.
Ими вы можете подобрать очень похожую на вашу организацию нагрузку - на одного главного расчетчика несколько обычных, еще больше кадровиков, еще больше табельщиков и т.п.
Я попробовал использовать как агента тестирования рабочую станцию Ред ОС 8 и получил странную ошибку, с которой надо разбираться - какое бы количество ни указать ВРМ, парочка из них не запустится, причем на всех агентах, т.е. запускается 8 из 10, если поменять общее число на 6, то запустится 4 из 6. :)
Поэтому ушел на клиентов windows как проверенный вариант и тест отработал штатно.
Возможно, просто где-то опечатался в настройках, все же эта статья для меня night builds.
В любом случае, даже если тест не отработал до конца, у вас будут замеры производительности с виртуальных рабочих мест, по которым вы можете сравнивать результаты с другими контурами серверов.
Также можно посмотреть картину по клиентским сеансам, например
APDEX, APDEX-ксом, но могут быть и пользователи... Статистический подход к замерам производительности. Внешний отчет на СКД
По поводу использования 1С:Корпоративный инструментальный пакет, я помню, раньше на курсе 1С:Эксперт по технологическим вопросам говорилось, что использовать его может сотрудник организации, у которой есть лицензия.
Сейчас это даже не конфигурация, а расширение, а у меня нет данных, что 1С меняло правила для учета расширений.
См. Ответы на типовые вопросы по лицензированию «1С:Предприятия 8» там везде говорится об "основные поставки, которые содержат платформу, прикладное решение (конфигурацию)" т.е. на мой взгляд встраивать расширение в вашу конфигурацию должен покупатель поставки, но далее использование пока не регламентируется.
Желающие могут в комментариях подискутировать.
Если у вас нет времени/возможности использовать 1С:Корпоративный инструментальный пакет, то придется прибегать к подручным средствам linux, в котором правильнее сказать для которого написаны как всеобъемлющие пакеты тестирования, так и утилиты ставшие де-факто методом тестирования одного рода оборудования, сети, диска, etc.
Измерение производительности с помощью утилит
- pgbench
О ней мы говорили ранее Построение отказоустойчивого кластера PostgreSQL. HAProxy, давай до свидания. Рецепты от Капитана
На лидере создаем и инициализируем базу pgbench.
sudo -u postgres psql -U postgres -c "create database pgbench;"
PGPASSWORD='123456' pgbench -h redos-vm -U postgres -i -s 5 pgbench
Затем с клиента проверяем по прямому соединению на лидер
Устанавливается вместе с пакетами postgres
все остальные требуют установки и все присутствуют в штатном репозитории РЕД ОС
PGPASSWORD='123456' pgbench -h red-srv.test.loc -U postgres -c 10 -j 1 -t 10000 pgbench
- 7z
Отличный инструмент для быстрого измерения производительности компьютера, причем дающий сравнимые результаты как для linux так и для windows.
7z b
Еще два кроссплатформенных инструмента
- iPerf
измеряющий пропускную способность сети между устройствами, одно из которых будет сервером, а второе клиентом тестирования
iperf -s и iperf -c <адрес сервера> в простейшем случае, но у утилиты есть достаточное количество настроек для любого тестирования сети
Еще больше настроек есть у
- fio
для замера производительности дисковой системы в Linux
Уважающие себя облачные провайдеры приводят тесты своих систем обычно в ее нотации,
у одного из них я и взял как образец файл test.ini со следующим содержимым:
[test IOPS]
blocksize=8k
filename=/tmp/testfile
filesize=1G
direct=1
buffered=0
ioengine=libaio
iodepth=64
rw=randrw
rwmixwrite=30
runtime=10
clat_percentiles=0
unlink=1
тогда запуск будет fio ./test.ini
- Нагрузочный тест gilev.ru
Без него обзор вариантов будет неполным. Измеряющий, на мой взгляд, сферического коня в вакууме, быстродействие ЦП, т.к. нагрузку на сеть дает небольшую, а база почти наверняка вся будет в кэше сервера СУБД.
Но уж точно не надо его использовать для определения рекомендуемого количества пользователей.
Зато он четко продуман маркетологически.
С красивыми картинками и названием.
И он на 1С, это магические слова.
Можно стартануть его на ноутбуке финансового директора и потом, пустив скупую мужскую слезу, показать результаты с сервера и просить бюджет.
Это работает.
Аналогичные результаты можно получить простым запуском бенчмарка 7zip, если вы измеряете производительность для своего понимания.
C’est tout... как говорят французы
Планы на будущее:
Подтянуть собственные знания, особенно 1С:Исполнитель хочется пощупать)
А если серьезно, то далее идет мониторинг и поддержка.
Поэтому, скорее всего, будет публикация "1000 мелочей..." с различными нюансами, вроде того как заново собрать контур patroni и где у PostgresPro прячется $PGDATA.
И на ИТС есть отличная статья про мониторинг, ее тоже хочется проверить и визуализировать.
Благодарности:
Благодарю компанию ©Serverspace за предоставленное оборудование, без поддержки собрать такой пингвинариум мне было бы негде.
Желающие знают, где меня искать, время за пределами рабочего.
Статья продолжает серию публикаций:
- Построение отказоустойчивого кластера 1С: Предприятие 8.3. Требования назначения функциональности. MythBusters
- Построение отказоустойчивого кластера PostgreSQL. HAProxy, давай до свидания. Рецепты от Капитана
- В облако на работу: Архивирование postgres. Дайте два
- В облако на работу: Все варианты авторизации ОС сервером 1С на базе РЕД ОС 8 в домене windows. Рецепты от Капитана
- Бесплатный вебинар "В облаке, как дома: Как настроить рабочее место пользователя 1С на базе РЕД ОС"
- В облаке, как дома: Устраиваемся поудобнее. Рабочее место пользователя 1С на базе РЕД ОС (HTTPS и архивирование)
- Три пингвина под окном... Обзор рабочих мест пользователя 1С, собранных на отечественных дистрибутивах linux
- Три пингвина под окном… Точки над Ё. Обзор рабочих мест пользователя 1С, собранных на отечественных дистрибутивах linux
- Установка 1С:Сервера взаимодействия. Заметки на полях
- Сервер 1С:Предприятие на Ubuntu 16.04 и PostgreSQL 9.6, для тех, кто хочет узнать его вкус. Рецепт от Капитана обратите внимание на дату публикации
- 1С в 1cloud.ru. Теплое, ламповое, свое отчет о походе в питерский офис ©Serverspace когда он еще не был Serverspace
Серия "Рецепты от Капитана" на всякий случай