Ситуация, когда на первый взгляд мощное оборудование (например, 32-ядерный AMD Epyc) показывает крайне низкую производительность в 1С, встречается довольно часто. Проблема «зависания» баз, когда конфигуратор открывается по 30–40 минут, а отладка становится невозможной, обычно кроется не в самой платформе 1С, а в комплексных настройках серверной инфраструктуры, виртуализации и распределении ресурсов. Рассмотрим подробно, как диагностировать и устранить эти проблемы.
Проанализируем ситуацию, описанную в теме: на сервере развернута 1С:ERP и Бухгалтерия КОРП для нужд разработки. Автор указывает объем оперативной памяти в 40 ГБ. Для обычных файловых баз это значительный объем, но для ERP в режиме разработки этого критически мало.
Разберем по шагам, куда уходит память:
Если на сервере работают 4–7 разработчиков, суммарная потребность в памяти легко превышает 60–80 ГБ. Как только память заканчивается, сервер «впадает в ступор», что пользователи воспринимают как зависание программы. Для точной оценки необходимых ресурсов серверов 1С и СУБД можно использовать калькулятор расчета параметров оборудования.
Процессоры AMD Epyc имеют многокристальную компоновку. Это означает, что процессор состоит из нескольких чиплетов, и доступ к памяти организован через разные контроллеры. Если виртуальная машина «размазана» по разным узлам NUMA, возникают огромные задержки при обращении к данным в RAM.
Выясним причину тормозов на уровне BIOS и гипервизора:
NPS=4. Это позволяет операционной системе лучше понимать топологию памяти.Если 1С работает внутри виртуальной машины VMware, необходимо исключить влияние механизмов динамического распределения ресурсов гипервизора, которые могут «подрезать» производительность сервера 1С.
Выполним следующие рекомендации:
Ballooning, когда гипервизор забирает память у ВМ для нужд других машин.Latency Sensitivity в значение High. Это заставит планировщик гипервизора отдавать приоритет процессам этой машины.VMXNET3. Старые эмулируемые адаптеры (E1000) создают избыточную нагрузку на CPU и имеют низкую пропускную способность.В обсуждаемой теме сервер 1С и сервер SQL разнесены на разные виртуальные машины. Рассмотрим, как это влияет на скорость. 1С генерирует тысячи мелких запросов к базе данных при открытии форм или формировании отчетов. Даже задержка в 1–2 мс на сетевом уровне превращается в минуты ожидания для конечного пользователя.
Проанализируем ситуацию: если между серверами есть сетевой «хоп» или виртуальный коммутатор работает с задержками, 1С будет «висеть» на каждом серверном вызове. Рекомендуется размещать сервер 1С и SQL на одном физическом хосте в рамках одной виртуальной сети или использовать Shared Memory (если они на одной ОС), что даст прирост производительности до 15-20%.
Для того чтобы точно понять, на чем именно «зависает» база, необходимо настроить сбор логов. Рассмотрим пример конфигурационного файла logcfg.xml для поиска длительных операций:
<config xmlns="http://v8.1c.ru/7.4/config/logcfg">
<dump location="C:\Dumps" create="1" interval="10" />
<log location="C:\Logs\LongOps" history="24">
<event>
<eq property="name" value="SDBL"/>
<gt property="duration" value="100000"/>
</event>
<event>
<eq property="name" value="CALL"/>
<gt property="duration" value="500000"/>
</event>
<property name="all"/>
</log>
</config>
В данном примере мы фиксируем все обращения к базе данных (SDBL) длительностью более 0.1 секунды и серверные вызовы (CALL) более 0.5 секунды. Проанализировав эти логи, мы сможем увидеть, что именно происходит в те 30 минут, пока открывается конфигурация. Для автоматизации сбора технологического журнала и анализа узких мест можно применить инструмент замера производительности контура 1С.
Часто системные администраторы забывают настроить исключения для антивируса (в том числе встроенного Windows Defender). Проанализируем список необходимых исключений:
rphost.exe, rmngr.exe, ragent.exe, sqlservr.exe..mdf, .ldf, .1cv8, .1cl, .log.C:\Program Files\1cv8\srvinfo) и временные папки пользователей Temp.Подводя итог, можно сказать, что «зависание» мощного сервера на базе AMD Epyc при работе с 1С:ERP чаще всего связано с неправильным распределением памяти и настройками виртуализации.
Для решения проблемы выполним следующие шаги: