Ситуация, когда клиентские процессы 1С (1cv8c.exe) начинают потреблять аномально много ресурсов центрального процессора, даже находясь в состоянии покоя, — это распространенная проблема, особенно характерная для файловых баз данных на платформе версий 8.3.17 и 8.3.18. В этой статье мы подробно разберем причины возникновения такой нагрузки, проанализируем влияние сетевых протоколов и предложим пошаговый план решения проблемы.
Рассмотрим стандартную ситуацию: в диспетчере задач сервера мы видим, что каждый запущенный экземпляр 1С потребляет от 5% до 15% ресурсов CPU, при этом пользователи в программе ничего не делают. Когда количество подключений переваливает за 7–10, суммарная нагрузка достигает критических 100%, и сервер начинает "зависать".
Первым делом проанализируем состояние фоновых заданий. Если список выполняемых заданий пуст, а отладка не показывает активных циклов в коде, значит, проблема кроется не в прикладном решении (конфигурации), а в механизмах самой платформы или взаимодействия с операционной системой. Выясним основные технические причины этого поведения.
Как показывает практика и обсуждения специалистов, ветки платформы 8.3.17 (особенно релиз 8.3.17.1549) и 8.3.18 содержат внутренние ошибки в так называемом "цикле ожидания" (Idle Loop). Программа в бесконечном цикле опрашивает системные события, не переходя в режим пониженного энергопотребления.
Рассмотрим варианты действий:
8.3.16 (например, 8.3.16.1814). Многие пользователи отмечают, что после возврата на эту версию нагрузка на CPU падает до нормальных значений (менее 1% на пользователя в покое).8.3.19, 8.3.20 и выше. В релизах ветки 8.3.18, начиная с номера .1741, разработчики 1С заявляли об исправлении ошибок, связанных с паразитной нагрузкой в файловом режиме.Для файловых баз, расположенных в общих сетевых папках, критическое значение имеет протокол SMB (Server Message Block). Начиная с Windows Server 2012, активное использование механизмов SMB Leasing может приводить к конфликтам блокировок файла 1Cv8.1CD.
Проанализируем ситуацию: когда 10 пользователей одновременно обращаются к одному файлу, механизмы кэширования SMB начинают бесконечно пересогласовывать права доступа. Процессор нагружается не вычислениями 1С, а обработкой этих очередей.
Рекомендация: Попробуйте временно отключить SMB Leasing на стороне сервера. Это заставит клиентов меньше полагаться на локальное кэширование и снизит интенсивность "стука" в файл базы данных. Также обязательно проверьте режим энергопотребления сервера — он должен быть установлен в "Высокая производительность" (High Performance). Это исключит динамическое изменение частоты процессора, которое часто провоцирует микро-задержки в 1С.
Это самый эффективный технический способ решения проблемы для файловых вариантов работы, если переход на SQL-версию пока невозможен. Разберем по шагам, почему это помогает:
1Cv8.1CD напрямую через сетевую шару.1cv8c.exe, так как сетевое взаимодействие берет на себя оптимизированный веб-стек.Посмотрим на пример настройки: установите Apache 2.4 или включите роль IIS в Windows Server. Выполните публикацию базы через конфигуратор (меню "Администрирование" — "Публикация на веб-сервере"). После этого пользователи смогут подключаться к базе через тонкий клиент, указав адрес типа http://server_name/base_name. Это снижает нагрузку на CPU в несколько раз.
Современная платформа 1С использует встроенный движок Chromium (CEF) для отображения новостей, монитора портала и других интернет-сервисов. Даже если эти окна закрыты, процессы могут продолжать фоновую активность, особенно если сервер ограничен в доступе к интернету или использует прокси.
Выполним следующие действия:
AppData\Local\1C\1cv8. Рекомендуется регулярно очищать кэш пользователей, так как накопление тысяч мелких файлов метаданных заставляет платформу тратить ресурсы на их индексацию при каждом запуске.Иногда высокая нагрузка вызвана логическими ошибками в структуре самого файла .1CD. Проанализируем состояние базы с помощью встроенных утилит.
Рассмотрим алгоритм обслуживания:
.dt и последующую загрузку в новую чистую папку. Это полностью пересоберет файл базы данных и устранит фрагментацию.chdbfl.exe (находится в папке bin платформы) для проверки физической целостности файла.Если в вашей организации более 5–7 активных пользователей, и вы столкнулись со 100% загрузкой CPU на платформе 8.3.17/18, наиболее правильным стратегическим решением будет переход на клиент-серверный вариант (SQL). Однако для оперативного исправления ситуации без смены архитектуры наиболее эффективными являются: откат платформы до версии 8.3.16.1814 или публикация базы на веб-сервере Apache/IIS.
Помните, что каждый дополнительный пользователь в файловом режиме создает экспоненциальную нагрузку на дисковую подсистему и процессор из-за специфики блокировок Windows, поэтому мониторинг ресурсов сервера должен стать регулярной задачей системного администратора.