Работа в среде с большим количеством информационных баз (более 100) и активным использованием хранилища конфигураций накладывает специфические требования к настройке серверного оборудования и программного обеспечения. Часто стандартные настройки не справляются, и разработчики сталкиваются с длительными задержками при захвате или помещении объектов. В этой статье мы подробно разберем, как оптимизировать сервер 1С, настроить рабочие процессы и ускорить работу с хранилищем.
Рассмотрим ситуацию, когда на сервере развернуто множество баз, с которыми работают группы разработчиков. Стандартные настройки кластера подразумевают, что один рабочий процесс rphost.exe обслуживает множество информационных баз и соединений. Это может привести к нестабильности и снижению скорости работы из-за конкуренции за ресурсы внутри одного процесса.
Проанализируем ключевые параметры рабочего сервера:
rphost.exe для каждой активной информационной базы. Такой подход обеспечивает изоляцию баз друг от друга. Если одна база вызовет критическую ошибку или утечку памяти, это не затронет разработчиков в других базах.Выясним причину, почему это помогает: конфигуратор 1С во многих операциях является однопоточным. Разнося базы по разным процессам, мы позволяем операционной системе более гибко распределять эти процессы по разным физическим ядрам процессора.
Работа с хранилищем часто становится «узким местом». Любая операция (захват, помещение, сравнение) требует интенсивного обмена мелкими пакетами данных и работы с файловой структурой хранилища. Разберем шаги по ускорению этих процессов:
Переход на сетевое хранилище (TCP)
Использование прямого доступа к файлам хранилища через сетевую шару (SMB) крайне неэффективно из-за блокировок и накладных расходов протокола. Необходимо использовать службу crserver.exe (сервер хранилища конфигураций 1С).
tcp://ИмяСервера/ИмяХранилища.Обслуживание базы хранилища
Файлы хранилища со временем фрагментируются и накапливают избыточные данные. Проанализируем инструменты администрирования:
Многие забывают, что скорость работы конфигуратора с хранилищем зависит не только от сервера, но и от локальных настроек клиента (даже если клиент запущен в RDP). Выполним настройку использования локальных данных:
В конфигураторе перейдите в меню Конфигурация — Хранилище конфигурации — Настройка.... Увеличьте размер локального кэша данных хранилища. По умолчанию там может стоять 500 Мб, попробуйте увеличить это значение до 2048 Мб (2 Гб) или более. Это позволит 1С реже обращаться к серверу за историей объектов, которые уже были загружены ранее.
Высокая очередь к дискам (более 2–5) — явный признак того, что дисковая подсистема не справляется. Даже если у вас RAID 10 из HDD, случайное чтение и запись (характерные для SQL и 1С) будут медленными.
Рассмотрим рекомендации по дискам:
tempdb используется 1С постоянно для временных таблиц. Ее перенос на SSD даст мгновенный прирост производительности.Посмотрим на настройки SQL Server, которые важны для стабильности 1С:
Shared Memory. Это позволит им обмениваться данными через оперативную память, минуя сетевой стек, что значительно быстрее.Проанализируем результаты теста Гилева. Если вы получаете около 30–35 единиц при наличии мощных процессоров Xeon, причина чаще всего кроется в низкой тактовой частоте на одно ядро. Для 1С частота важнее количества ядер.
Настройка электропитания в BIOS
Обязательно проверьте настройки BIOS сервера. По умолчанию многие серверы стоят в режиме энергосбережения. Нужно установить режим Maximum Performance (Максимальная производительность). В противном случае процессор будет динамически снижать частоту («засыпать»), и в момент нажатия кнопки в 1С системе потребуется время на «пробуждение» ядра, что воспринимается пользователем как микрофризы.
Если сервер не загружен на 100%, но все «висит», значит, имеют место ожидания на блокировках. Разберем пример скрипта для анализа текущих ожиданий в SQL Server:
SELECT
r.session_id,
r.start_time,
r.total_elapsed_time,
r.wait_type,
r.wait_time,
r.last_wait_type,
t.text AS [QueryText]
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE r.wait_type IS NOT NULL;
Этот запрос покажет, какие процессы в данный момент ждут освобождения ресурсов и какой тип ожидания (wait_type) является преобладающим. Если вы видите типы PAGEIOLATCH_XX, значит, проблема в скорости дисков.
Подводя итог, можно сказать, что комплексная настройка — от параметров электропитания до режима работы рабочих процессов — позволяет добиться комфортной работы даже при очень большом количестве информационных баз на одном сервере. Начните с изоляции ИБ по процессам и перевода хранилищ на TCP, это даст наиболее заметный результат в кратчайшие сроки.