При обслуживании большого количества информационных баз 1С (например, 30–40 баз консалтинговой или бухгалтерской фирмы) на одном сервере системные администраторы часто сталкиваются с резким падением производительности. Базы данных начинают открываться по несколько минут, возникает ошибка соединения Shared Memory или Native Client, а в консоли MS SQL Server Management Studio информационные базы периодически переходят в состояние Recovery (Восстановление).
Проанализируем основные причины возникновения таких сбоев и разберем по шагам порядок действий для восстановления стабильной работы сервера 1С и СУБД.
Переход базы данных MS SQL в состояние Recovery означает, что СУБД производит накатывание или откат нерегистрированных транзакций для обеспечения целостности данных. Если это происходит регулярно прямо во время работы пользователей, причины кроются в следующих факторах:
pagefile.sys. В момент высокого потребления памяти рабочими процессами 1С (rphost.exe) или СУБД (sqlservr.exe) возникают таймауты ввода-вывода, из-за чего SQL Server теряет связь с диском и уводит базы в процедуру восстановления..ldf) задан в процентах или небольшим фиксированным значением (1 МБ), внутри лога образуются тысячи виртуальных файлов (VLF), что существенно замедляет любые операции проверки целостности.Первым экстренным шагом для снятия блокировок и устранения ошибок «База данных не обнаружена» является сеансовая очистка служебных файлов кластера 1С и пересоздание журналов транзакций SQL.
название службы: 1C:Enterprise 8.3 Server Daemon или аналогичное).C:\ProgramData\1C\1CEstart и C:\ProgramData\1C\1cv8\srvinfo) и удалим содержимое папок системного кэша (папки с именами вида reg_1541, исключая сам файл конфигурации кластера, если требуется сохранить список баз, или очистим каталоги временных файлов рабочих процессов).Detach)..ldf).Attach) — при отсутствии .ldf файла SQL Server автоматически создаст чистый журнал транзакций.Разберем пример сервера с ограничением в 16 ГБ ОЗУ. Выделение 9 ГБ под 1С и 6 ГБ под SQL Server оставляет операционной системе всего 1 ГБ, что неизбежно приводит к жесткому своппингу на диск.
Для обеспечения стабильности установим следующие лимиты:
Maximum server memory) значением 6–7 ГБ.MSSQLSERVER, локальное право Windows Lock Pages in Memory через оснастку secpol.msc (Локальная политика безопасности -> Назначение прав пользователя). Это запретит операционной системе вытеснять память SQL Server в файл подкачки.Для снижения нагрузки на процессор и оперативную память настроим параметры работы кластера 1С в консоли администрирования:
1 или 2. Это позволит разнести нагрузку разных баз по отдельным процессам rphost.exe и предотвратит падение всех пользователей при сбое в одной базе.86400 секунд — раз в сутки в ночное время) и Предел объема памяти для процессов, чтобы своевременно освобождать протекающую память.Проанализируем критически важные параметры СУБД для работы с 1С:
ALTER DATABASE [ИмяБазы] SET AUTO_CLOSE OFF;
ALTER DATABASE [ИмяБазы] SET AUTO_SHRINK OFF;
.mdf) и файла лога (.ldf) с процентного на фиксированный. Для лога укажем шаг 256 MB или 512 MB, чтобы избежать образования тысяч мелких виртуальных файлов VLF.Max Degree of Parallelism равным 1 или 2. Это исключит ситуацию, когда один неоптимальный запрос 1С утилизирует 100% всех ядер процессора.