При работе с информационными базами 1С, особенно такими как 1С:ЗУП с большим объемом данных (например, 30 ГБ), пользователи часто сталкиваются с критическим замедлением работы. Это может проявляться в долгом открытии справочников (например, «Сотрудники»), карточек, зависаниях при проведении или заполнении документов. Давайте вместе разберем причины таких проблем в инфраструктуре, где 1С и SQL Server разнесены на разные виртуальные машины под управлением гипервизора, и найдем пути их решения.
Когда пользователи жалуются на то, что «ЗУП висит», это является явным признаком серьезных проблем с производительностью. Такая ситуация делает работу с системой практически невозможной и требует немедленного вмешательства. Мы видим, что база 1С:ЗУП достигла размера в 30 ГБ, что само по себе не является критически большим размером, но при неправильной конфигурации может усугублять проблемы. Проблемы затрагивают не только ЗУП, но и другие базы, что указывает на системный характер сбоя.
В вашем случае 1С:Предприятие и SQL Server работают на разных виртуальных машинах, размещенных на одном физическом гипервизоре Hyper-V. Возникает вопрос: почему именно так, и нельзя ли обойтись без гипервизора?
Разделение SQL Server и сервера приложений 1С на разные виртуальные машины — это распространенная и, как правило, рекомендуемая практика. Давайте рассмотрим ее преимущества:
Однако, несмотря на эти преимущества, необходимо правильно распределить ресурсы между виртуальными машинами и учитывать накладные расходы, которые вносит сам гипервизор. В противном случае, необоснованное разделение может привести к снижению производительности, что, вероятно, и произошло в вашем случае.
Прежде чем приступать к изменениям, нам необходимо собрать максимально полную информацию о вашей системе. Мы уже знаем, что:
Критически важным шагом является запуск и анализ теста Гилева. Он позволяет оценить производительность дисковой подсистемы, процессора и памяти в контексте работы 1С. Полученные "попугаи" дают объективную картину узких мест.
Один из ключевых факторов, существенно влияющих на производительность сервера, часто скрыт в базовых настройках — это параметры энергосбережения. Давайте рассмотрим, как их настроить.
Многие серверы по умолчанию настроены на баланс между производительностью и энергоэффективностью. Это означает, что процессор может не работать на своей максимальной тактовой частоте, особенно при переменной нагрузке. Для работы 1С критична высокая и стабильная тактовая частота процессора, поскольку платформа не всегда эффективно распараллеливает один процесс на множество ядер.
Intel SpeedStep, AMD Cool'n'Quiet, C-States (C1E, C3, C6, C7). Эти функции динамически изменяют частоту и напряжение процессора для экономии энергии, но могут замедлять отклик системы.Turbo Boost, убедитесь, что она включена в BIOS. Это позволит процессору временно повышать свою тактовую частоту выше номинальной при интенсивной нагрузке.Важно отметить, что сисадмины иногда опасаются, что отключение этих функций приведет к "износу" сервера. На самом деле, серверное оборудование спроектировано для работы в режиме высокой нагрузки. Использование его на полную мощность для критически важного бизнес-приложения, такого как 1С, является нормой, а не "износом".
После настройки BIOS необходимо убедиться, что операционные системы виртуальных машин также настроены на максимальную производительность.
В нашем случае используются два процессора Intel Xeon E5-2637, каждый с 8 ядрами. Это мощное решение. Однако, если энергосберегающие функции включены, процессор может работать на значительно сниженной частоте. Например, номинальная частота E5-2637 составляет 3.5 GHz, а в режиме Turbo Boost может достигать 3.8 GHz. Если же активированы энергосберегающие режимы, частота может падать до 1.2-2.0 GHz, что моментально приводит к замедлению работы 1С.
Дисковая подсистема является одним из наиболее частых "узких мест" в производительности 1С и SQL Server. У вас используется 6 SSD дисков по 300 ГБ в RAID 10 массиве, что является хорошей основой. Давайте оптимизируем ее использование.
RAID 10 (RAID 1+0) — это отличный выбор для баз данных, так как он обеспечивает как высокую производительность (благодаря чередованию данных), так и высокую отказоустойчивость (благодаря зеркалированию). Использование SSD дисков многократно увеличивает скорость операций ввода/вывода (IOPS) по сравнению с традиционными HDD.
Крайне важно правильно распределить файлы SQL Server по дискам для максимальной производительности:
.mdf, .ndf): Разместите основные файлы баз данных 1С на отдельном пуле или логическом разделе RAID-массива. Сообщение 16 предлагает 2 SSD для SQL базы..ldf): Разместите файлы журналов транзакций SQL Server на отдельном, максимально быстром дисковом разделе. Файлы журналов требуют очень высокой скорости последовательной записи. Сообщение 16 предлагает 2 SSD для журналов SQL.TempDB на отдельном быстром диске (лучше всего, отдельном RAID-массиве из SSD). Это очень активная база данных, которая интенсивно используется SQL Server для временных операций, сортировок и промежуточных результатов.Ваша текущая конфигурация (6 SSD в RAID 10) позволяет реализовать такую схему. Мы можем разбить логические тома таким образом, чтобы выделить отдельные дисковые пространства для ОС, данных SQL и журналов SQL.
Для дисков, на которых расположены файлы баз данных SQL Server (включая TempDB), рекомендуется использовать размер кластера 64 КБ при форматировании. Это соответствует оптимальному размеру страницы данных SQL Server и снижает фрагментацию. Для остальных томов (например, для ОС) можно использовать стандартный размер кластера (4 КБ).
Убедитесь, что на дисках, где расположены файлы баз данных и журналов, отключено сжатие, так как оно значительно замедляет операции ввода/вывода.
Неправильная настройка SQL Server — это одна из наиболее частых причин низкой производительности 1С. Давайте рассмотрим ключевые параметры, которые необходимо проверить и настроить.
Ваша виртуальная машина SQL Server имеет 69 ГБ ОЗУ, что является хорошим объемом. Однако, важно убедиться, что SQL Server эффективно использует эту память.
Maximum server memory (MB)) таким образом, чтобы оставить достаточно памяти для операционной системы. Рекомендуется оставлять 4-8 ГБ для ОС. В вашем случае, если у вас 69 ГБ, вы можете выделить SQL Server около 61-65 ГБ.Lock pages in memory: Включите опцию Lock pages in memory (блокировка страниц в памяти) для учетной записи службы SQL Server. Это предотвратит выгрузку страниц SQL Server в файл подкачки Windows, что значительно повышает производительность СУБД. Это делается через групповые политики (gpedit.msc -> Конфигурация компьютера -> Конфигурация Windows -> Параметры безопасности -> Локальные политики -> Назначение прав пользователя -> Lock pages in memory).Max Degree of Parallelism - MDOP)Параметр Max Degree of Parallelism (MDOP) контролирует, сколько процессорных ядер SQL Server может использовать для выполнения одного запроса.
SSMS) или командой sp_configure.TempDBБаза данных TempDB является критически важным ресурсом SQL Server.
TempDB на отдельном быстром диске (SSD). Если есть возможность, используйте для нее отдельный логический том или даже отдельный RAID.TempDB (.mdf). Их количество должно быть равно числу физических ядер процессора, но не более 8 (если ядер больше 8, обычно достаточно 8 файлов).TempDB должны быть одинакового размера.TempDB, но установите фиксированный размер приращения (например, 256-512 МБ), чтобы избежать частых и мелких операций расширения.Instant File Initialization)Включение Database instant file initialization позволяет ускорить операции создания и расширения файлов баз данных, избегая их заполнения нулями. Это особенно актуально при создании новых баз, добавлении файлов или авторосте. Для этого учетная запись, от имени которой запускается служба SQL Server, должна иметь разрешение Perform Volume Maintenance Tasks.
Регламентные задания по дефрагментации индексов и обновлению статистики являются критически важными для поддержания производительности 1С. Вы упомянули, что они выполняются раз в неделю, что хорошо, но давайте уточним детали:
REBUILD) индексы с фрагментацией более 30%.REORGANIZE) индексы с фрагментацией в диапазоне 10-30%.Используйте команды ALTER INDEX REBUILD или ALTER INDEX REORGANIZE.
UPDATE STATISTICS tablename WITH FULLSCAN или sp_updatestats.DBCC FREEPROCCACHE. Это заставит SQL Server перекомпилировать планы выполнения запросов, используя актуальную статистику и индексы.msdb и другие служебные базы данных, чтобы они не разрастались.FullText Search, Reporting Services, Analysis Services, Integration Services, если они не используются вашей системой 1С. Это освободит ценные ресурсы.TCP/IP. Убедитесь, что он включен и настроен. Протокол Named Pipes можно отключить, если он не используется для других приложений.Сервер приложений 1С также требует внимательной настройки для обеспечения максимальной производительности.
Важно помнить, что стандартные лицензии 1С ПРОФ для сервера приложений (1C:Enterprise Server) обычно не используют более 12 ядер CPU. Если ваш физический сервер имеет 16 ядер, а виртуальная машина 1С Server имеет, например, 8 виртуальных ядер, администратор может видеть низкую общую загрузку процессора на физическом хосте, но при этом процессы 1С могут быть ограничены в использовании доступных им vCPU, если они не задействуются платформой. Для эффективного использования большего количества ядер требуются дополнительные лицензии 1С или специальные настройки.
Page File)На виртуальной машине сервера приложений 1С выделено 30 ГБ ОЗУ. При таком объеме памяти мы можем рассмотреть оптимизацию файла подкачки:
На терминальных серверах и некоторых версиях Windows Server (начиная с 2012), может быть активна служба Dynamic Fair Share Scheduling (DFSS). Эта служба предназначена для равномерного распределения аппаратных ресурсов между пользователями терминального сервера. Если вы не используете сервер приложений 1С как терминальный сервер для пользователей, а только для работы кластера 1С, отключение этой службы может повысить производительность, так как она может вносить искусственные задержки.
Сам гипервизор Hyper-V имеет свои настройки, которые могут влиять на производительность виртуальных машин.
В Hyper-V существуют различные режимы работы планировщика виртуальных машин:
classic scheduler, который был сбалансирован для большого количества ВМ.core scheduler, ориентированный на безопасность и стабильность, но не всегда на максимальную производительность в сценариях с одной или двумя высоконагруженными ВМ.Если вы используете более свежую версию Hyper-V, переключение на classic scheduler может дать значительный прирост производительности (до 50%) для рабочих нагрузок 1С. Это настраивается на уровне хоста Hyper-V через PowerShell.
Вы упомянули изменения в сети, связанные с переходом на IP-телефонию. Хотя это может показаться косвенной причиной, любые изменения в сетевой инфраструктуре могут влиять на производительность 1С, так как взаимодействие между клиентами, сервером 1С и SQL Server полностью зависит от сети.
latency) между ВМ с помощью утилит ping и tracert.Для выявления "узких мест" и контроля за изменениями, мы рекомендуем использовать комплексный подход к мониторингу:
Perfmon в Windows, Zabbix, Prometheus) для отслеживания загрузки CPU, использования RAM, активности дисков (IOPS, Latency) и сетевого трафика на физическом хосте и на каждой виртуальной машине.Только комплексный анализ и поэтапное применение оптимизационных мер позволят вам добиться стабильной и высокой производительности 1С:ЗУП и других баз данных на вашей инфраструктуре.