Утилита тестирования сервера 1С от HADGEHOGs
Обновление от 25.10.2022
Внесены следующие обновления:
- Добавлена поддержка MS SQL 2012 и выше
- Добавлена поддержка 32-х разрядного сервера 1С
- Проработано более подробное описание ошибок программы
Утилита размещена в виде stand-alone файла, предварительно проверена на virustotal.com, вирусов нет, результаты проверки:
https://www.virustotal.com/gui/file/74746f364ea0fd6e223d35566af1415661749e5e059efb53b358d024c0a01a84?nocache=1
Внимание!
Автор не несет никакой ответственности за функционал данного приложения. Не скачивайте, не устанавливайте, не запускайте данное приложение, если не понимаете, что делаете, если понимаете, что делаете, но не читали весь этот текст. Никаких намерений деструктивного плана и функционала в данном приложении не было запроектировано, ОДНАКО, пользователь своими действиями или бездействиями может внести в продуктивную среду нарушение работоспособности. Безусловным требованием при начале использования, является тестовое ознакомление в тестовой среде, изолированной от продуктивной (например, на копии сервера 1С и сервера MS SQL). Полный текст отказа от ответственности будет доступен при установке, а также в самой программе, по нажатию кнопки "О программе", вкладка "Лицензия".
Базовое описание
Давно собирался написать программу, которая объединила бы в себе все советы и хинты по настройке сервера 1С и сервера SQL и, наконец, время настало.
Запускать утилиту следует на сервере 1С, под полными правами, с выдачей полноправного доступа к серверу SQL (поддерживается только Microsoft SQL Server). Настройки подключения, логины и пароли доступа к серверу SQL и кластеру 1С прописываются в основном окне приложения:
Утилита выполнит подключение к серверу SQL и серверу 1С, соберет с них данные и выдаст результаты в 4-х вкладках "Информация о системе" "Результаты анализа сервера SQL", "Результаты анализа сервера 1C", "Результаты анализа оборудования и ПО". Вкладка "Информация о системе" предельна очевидна и видна на картинке выше.
Каждый результат 3-х остальных вкладок представляет собой название результата, дефолтное значение, текущее значение, подробное описание и действие по исправлению (при ее возможности). Нажатие на название результата откроет эту статью на нужном разделе с более подробным описанием. Результаты, значение которых отличается от дефолтных незначительно, будут обозначены оранжевым значком, а значительные отличия - красным:
Результаты замеров сохраняются в файл БД в каталоге программы, их можно посмотреть, нажав на кнопку "Показать отчет". Каждый замер можно подписать своим комментарием, который потом отобразится в отчете:
Также, замеры можно отправить на сервер, введя учетном имя, выбрав галочку "Разрешить отправку результатов на сервер" и нажав кнопку "Применить":
Обмен с сервером выполняется в фоновом режиме, работайте нормально(отсылка к инструкции пользования кислородной маской в самолете).
Сам отчет по замерам выглядит следующим образом:
На первой вкладке можно увидеть таблицу замеров, ваших и других пользователей (если вы дали разрешение на отправку данных). В данной таблице доступен полнотекстовый поиск, сортировка, отбор и группировка перемещением группирующей колонки в область группировки.
На второй вкладке можно увидеть отчет с легендой расшифровки, который можно сохранить в pdf/excel, нажатием на нем правой кнопки мыша:
Также, из основного окна, на вкладке "Отправить отзыв" можно... отправить отзыв разработчику, ведь ваше мнение очень важно для нас:
Стоит еще заметить, что приложение будет иногда обновляться, и, когда это случиться, вверху будет выведена панель с предложением обновиться:
Как это работает
- Приложение устанавливается на сервер 1С (либо просто на любом компьютере, если на нем нет сервера 1С/ сервер 1С не установлен как служба).
- Приложение собирает информацию о ПО и оборудовании на сервере 1С
- Если дан полный (административный доступ к серверу MS SQL), тогда:
- Приложение самостоятельно разместит на сервере тестовую базу 'TestBase865524F877C240A3B90289C28FA85FF4' и пропишет ее на сервере 1С.
- Если сервер MS SQL находится на удаленном компьютере, приложение развернет на нем свою dll, и пропишет ее функции в качестве внешних расширенных процедур, запустит их выполнение, соберет информацию по ПО и оборудованию и удалит эти функции и dll.
Вы можете и не давать доступ к серверу MS SQL, если есть сомнения или опасения, и это - правильно, вы делаете это все на свой риск. Тогда данные об оборудовании и ошибках на сервере MS SQL будут недоступны. При этом, приложение предложит вам сохранить на диск и разместить на сервере 1С dt - файл под базу с именем 'TestBase865524F877C240A3B90289C28FA85FF4':
- Приложение запускает тесты производительности оборудования на сервере 1С (производительность процессора, диска, памяти).
- Приложение запускает тесты производительности в размещенной базе на сервере 1С (при наличии службы сервера 1С и размещенной тестовой базы), тестовой базе (производительность обработки данных, серверных вызовов, обмена с СУБД)
- Приложение запускает тесты корректности баз 1С на сервере MS SQL при наличии доступа к серверу SQL
- Приложение отправляет результаты тестирования на удаленный сервер при наличии разрешения и получает результаты тестирования других пользователей.
Собираемая информация об оборудовании и системе
Тут будет указана полная информация, которая будет собрана. Ничего отличного, от указанного ниже, не будет собрано. Никакой детальной информации, как серийные номера ОС, серийный номера дисков, процессора, памяти, записей Active Directory, имян пользователей, и.т.д. собрано не будет, кроме имени компьютера и имени домена для проверки факта установки сервера 1С и сервера MS SQL на одном компьютере, однако данная информация не будет доступна другим пользователя. Далее идет перечисление собираемой информации:
- Модель и частота процессора
- Модель и частота памяти
- Модель и тип диска
- Название и версия операционной системы
- Имя компьютера и домен
- Схема питания
- Виртуализация
Показатели производительности
За эталонные показатели производительности взяты показания, снятые на рабочей машине следующей аппаратно-программной конфигурации:
- Процессор Intel I5-8600k
- Память DDR-4 2133 Мгц, 32Гб
- Диск Samsung 980 1Тб
- ОС Windows 10.0.19042
- 1С 8.3.17.2306
- MS SQL Server 2019 15.0.2000.5
- Все допустимые улучшения по рекомендации 1С
Приложение выполняет анализ производительности процессора, памяти и диска следующим образом:
- Производительность процессора (показатель PPR - Processor Performance Raiting) оценивается задачей расчета числа ПИ по формуле Лейбница и оценивается в миллионах итераций в секунду. Эталонное значение =150. Вес показателя = 0.6.
- Производительность памяти (показатель MPR - Memory Performance Raiting) оценивается записью и чтением данных в блоке памяти и измеряется в мегабайтах в секунду.
- Производительность диска (показатели DWP, DRP - Disk Write/Read Performance) оценивается произвольной записью и чтением 4-х Кб данных во временном 1 Гб файле и отключенном кешированием операционной системы и измеряется в мегабайтах в секунду.
Производительность сервера 1С определяется следующими показателями:
- Короткие вызовы сервера 1С (показатель SSC - Short Server Call) -количество коротких вызовов (объемом в 16 байт + служебные) за 1 секунду времени выполнения. Критичный показатель при неоптимальном клиент-серверном коде, а также при навигации в динамических списках и табличных частях.
- Длинные вызовы сервера 1С (показатель LSC - Long Server Call) -количество длинных вызовов (объемом в 160000 байт + служебные) за 1 секунду времени выполнения. Критичный показатель при передаче на сервер больших объемов непрерывных данных, например при загрузке файлов.
- Количество обработанных данных на сервере 1С (показатель SEC - Server Execution Count) - количество тысяч обработанных строк таблицы значений за 1 секунду времени выполнения. Характеризует быстродействие обработки данных сервером 1С, без их получения с сервера СУБД.
- Короткие чтения СУБД (показатель SRC - Short Read Count)- Количество чтений из регистра сведений размером в 16 байт за 1 секунду времени выполнения без передачи результата на клиент.
- Короткие записи СУБД (показатель SWC - Short Write Count)- Количество записей в регистра сведений размером в 16 байт за 1 секунду времени выполнения без передачи результата на клиент.
Показатели SRC/SWC -крайне важные показатели быстродействия для OLTP-систем. Низкие показатели могут быть связаны с проблемами на сервере СУБД, либо с высокой латентностью передачи данных между сервером 1С и сервером SQL при их раздельном размещении.
- Длинные чтения СУБД (показатель LRC - Long Read Count)- Количество чтений из регистра сведений размером в 2064000 байт за 1 секунду времени выполнения без передачи результата на клиент.
- Длинные записи СУБД (показатель LWC - Long Write Count) - Количество записей в регистр сведений размером в 2064000 байт за 1 секунду времени выполнения без передачи результата на клиент.
Показатели LRC /LWC -менее важные показатели быстродействия для OLTP-систем, чем SRC/SWC. Низкие показатели могут быть связаны с проблемами на сервере СУБД, либо с низкой скоростью передачи данных между сервером 1С и сервером SQL при их раздельном размещении.
По итогу замеров строятся интегральные показатель производительности оборудования и сервера 1С (Общая оценка оборудования, Общая оценка сервера 1С), являющийся суммой отдельных относительных показателей (относительно эталонных) с учетом их веса.
Анализ проблем на сервере 1С
При выполнении анализа снимаются следующие проблемы сервера 1С:
- Избыточные файлы сеансовых данных - файлы *.dat, размером более 65536Кб папки snccntx сервера 1С, которые могут (но не обязательно) свидетельствовать о наличии проблем с работой сервера 1С , которые могут проявляться самым неожиданным образом (вплоть до пропадания пунктов меню в управляемом интерфейсе):
В таких случаях рекомендуется пересмотреть использования в коде временных хранилищ, либо выполнять перезапуск сервера 1С с удалением папки snccntx* из каталога сервера. Однако, данные файлы вполне могут быть файловым кешем больших объектов системы (двоичные данные во временном хранилище большие таблицы значений), которые не уместились в оперативной памяти, что является рабочей ситуацией, поэтому утилита не будет предлагать удаление этих файлов, но будет сигнализировать их наличие.
- Поиск использования базами журналов регистрации в формате SQLlite, что может негативно сказываться на производительности сервера 1С, когда журнал регистрации превышает размера в несколько гигабайт:
Утилита не будет предлагать перевод данных баз на журнал регистрации в тестовом формате, но будет сигнализировать их наличие.
- Схема питания - согласно рекомендации 1С https://its.1c.ru/db/metod8dev#content:5904:hdoc, рекомендовано включать схему "Высокая производительность", которая позволяет процессору всегда иметь высокую частоту. В режиме "Сбалансированная" или "Экономия" процессору нужно время, чтобы достичь максимальной производительность. При выполнении множества коротких, но частых обращений клиента 1С к серверу 1С (что наиболее распространенный сценарий) возникают значительные общие задержки. Данный показатель можно исправить прямо из программы:
- Сетевой протокол ipv6 - Протокол IPv6 по умолчанию включен в операционных системах Windows. При работе сервера 1С при включенном протоколе IPv6 могут возникать ошибки, как явные (с выводом сообщения об ошибке), так и неявные (с тихим перезапуском сервера 1С). Рекомендуется отключать протокол IPv6, это можно сделать из утилиты:
Анализ проблем на сервере MS SQL
При выполнении анализа снимаются следующие проблемы сервера MS SQL:
- Показатель максимальной параллельности выполнения запросов (MDOP, max degree of parallelism) - согласно рекомендациям 1С: https://its.1c.ru/db/metod8dev#content:5904:hdoc, значение должно быть равно 1, запрещающее параллельное выполнение одного запроса. Да, встречаются рекомендации использовать значение, равное 0 (разрешая полную параллельность), но ограничивать параметром Cost threshold for parallelism максимальную стоимость плана запроса, однако даже при работе типовых конфигураций могут возникать ситуации, когда годами стабильно выполняющийся запрос, после накопления данных, меняет план выполнения с выполнением полного сканирования таблиц и общей деградацией производительности.
- Флаг отключения эскалации блокировки таблиц (trace flag 1211) - согласно рекомендациям 1С: https://its.1c.ru/db/metod8dev/content/5946/hdoc, флаг должен быть включен. Включение флага увеличивает потребление памяти сервером MS SQL (не замеченное автором), но отключает блокировку всей таблицы при выборке (изменении) из нее более 5000 строк.
- Максимальный размер памяти, разрешенный для использования сервером SQL. Рекомендуемое значение - 0.7 от размера оперативной памяти системы, однако можно изменить в поле ввода утилиты:
- Устаревшая статистика баз данных - результат поиска баз 1С, для которых статистика имеет срок годности более 3-х дней. Устаревшая статистика грозит использованием неоптимальных планов запросов и критичным снижением производительности. Возможно, для сервера SQL не настроены регламентные задания, согласно рекомендациям 1С https://its.1c.ru/db/metod8dev/content/5837/hdoc :
- Ошибочные записи регистров накопления остатков - ситуации, когда дата документа ошибочно выставляется очень маленькой или очень большой, например, вместо 20.08.2022 может быть поставлена дата 20.08.0022, либо 20.08.3022. При этом, система может сгенерировать (если не заданы границы расчета итогов) набор записей итогов в разрезе каждого месяца от 20.08.0022 до текущей даты, и будет пересчитывать (перезаписывать) эти записи при проведении каждого документа, если он пересекается своими движениями по набору измерений ошибочного документа. В любом случае, это ошибка, которую нужно исправить. Найти нужный регистр можно при помощи одной из обработок по просмотру структуры базы данных, в дальнейшем это будет поддерживаться утилитой автоматически:
- Старые записи динамического обновления - параметр, определяющий наличие записей динамического обновления старше 10 дней (больше недели, включая выходные на проведение монопольного обновления), которые считаются невалидными и наличие которых может выполнять замедление работы базы, бесконечное ожидание запуска, либо ошибки формата потока. Нажатие кнопки 'Исправить' следует выполнять только после сохранения текущей конфигурации в cf-файл и выхода всех пользователей из базы. При нажатии кнопки, из конфигурации будут удалены записи динамического обновления. После нажатия, необходимо зайти в конфигуратор и сравнить и объединить конфигурацию с ранее сохраненным cf-файлом:
При наличии пользователей в базе данных, будет выдан диалог завершения работы пользователей (при наличии доступа к кластеру сервера 1С) и завершения службы сервера 1С:
- Большое количество записей таблицы локальных записей хранилища конфигурации '[DepotFiles]' (более 300 записей) - ошибка платформы, которая проявляется в основном, после загрузки cf файла в уже существующую конфигурацию и подключению ее к хранилищу, либо подключению базы к хранилищу. При каждом обновлении конфигурации, весь этот набор записей будет перезаписываться, что крайне замедляет обновление и последующий запуск. Исправляется удалением этих записей и очисткой локального кэша конфигурации. Утилита может выполнить это самостоятельно:
Заключение
Спасибо, что вы осилили текст воот до этого места, вам большое спасибо, да и мне тоже.