Почему зависает 1С 7.7 на Windows Server и как устранить проблему

Системный администратор 1С v7.7 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

В процессе многопользовательской работы с файловыми базами 1С:Предприятие 7.7 (DBF) в среде современных серверных операционных систем (Windows Server 2012 R2 и новее) системные администраторы часто сталкиваются с ситуацией, когда сеанс конкретного пользователя намертво зависает. При этом диспетчер задач показывает, что процесс 1cv7s.exe активен и не находится в статусе «Не отвечает», а другие пользователи могут продолжать работу либо также сталкиваются с блокировками. Разберем по шагам причины такого поведения платформы и детальные методы устранения зависаний.

1. Диагностика зависшего процесса через Монитор 1С

Когда программа перестает реагировать на действия пользователя, первым делом необходимо выяснить, какую именно операцию выполняет система. В файловом режиме блокировки и длительные расчеты часто выглядят как полное зависание окна приложения.

Для локализации проблемы выполним следующие действия:

  1. Запустим платформу в режиме Монитор (или откроем его из меню администратора базы данных).
  2. Перейдем в журнал событий и проанализируем последние действия зависшего пользователя.
  3. Выясним, какой объект был запущен: длительный отчет, проведение документа или внешняя обработка (например, обработка с длительными транзакциями или пакетная выгрузка данных).
  4. Проверим размер системного журнала событий — файла каталог_базы\Syslog\*.mlg. Если размер файла журнала превышает сотни мегабайт, движок 7.7 начинает существенно тормозить при записи каждого действия. Очистку журнала следует выполнять штатными средствами через Монитор 1С.

2. Проверка ограничений файлов DBF и переиндексация базы

Файловый движок базы данных 1С 7.7 (CodeBase) имеет жесткие технические ограничения. Главное из них — ограничение на максимальный размер любого файла таблицы *.DBF и файла индексов *.CDX в 2 Гб, а также лимиты на максимальное количество записей в таблице.

Разберем регламент проверки и исправления файловой структуры:

  1. Откроем каталог базы данных и отсортируем файлы по размеру. Проверим, нет ли таблиц, приближающихся к критическому объему в 1.5–2 Гб (особенно таблицы итогов регистров, проводок и журнала документов). При достижении этого лимита требуется свертка базы (удаление старых периодов) или перевод базы на SQL.
  2. Регулярно выполняем переиндексацию. В процессе активной работы (удаление, вставка, изменение записей) индексные файлы *.CDX раздуваются и фрагментируются, что приводит к замедлению выборки данных в десятки раз и взаимным блокировкам.
  3. Для ручной переиндексации завершим работу всех пользователей в базе данных, перейдем в папку с базой и удалим все файлы с расширением *.cdx. При следующем входе в монопольном режиме платформа автоматически выполнит полное перестроение индексов заново.

3. Устранение блокировок при транзакциях и модальных окнах

Одной из частых причин «зависания» базы для одного или нескольких пользователей является некорректная организация кода в конфигурации:

Проанализируем две ключевые проблемы программного кода:

  1. Открытие модальных форм внутри транзакций: если в программном коде открывается модальный диалог после вызова оператора НачатьТранзакцию(), вся база или отдельные таблицы блокируются на уровне файловой системы на все время, пока пользователь не нажмет кнопку в диалоге. Другие сеансы при попытке записи в те же таблицы встают в глухую очередь ожидания.
  2. Длительные выборки по регистрам: в файловой версии при формировании тяжелых отчетов платформа накладывает блокировки на диапазоны байт (Byte-range locking) файлов таблиц. Пока отчет строится по сети или в терминальной сессии, другие процессы не могут завершить свои операции.

4. Оптимизация распределенной базы (УРБД)

Если в информационной базе используется механизм УРБД (Управление распределенными информационными базами), зависания часто происходят в момент фонового или интерактивного обмена данными.

Рассмотрим, почему это происходит:

  1. При длительном отсутствии обмена таблицы регистрации изменений (служебные файлы миграции) сильно разрастаются.
  2. В момент старта автообмена платформа блокирует дескрипторы таблиц для чтения пакета изменений, из-за чего интерфейс зависает на длительное время.
  3. Рекомендуется выполнять обмен пакетами по расписанию в нерабочее время или в моменты минимальной пользовательской активности, а также следить за тем, чтобы файлы миграции не накапливали устаревшие изменения.

5. Тонкая настройка Windows Server 2012 R2 под 1С 7.7

Для стабильной работы устаревшего 32-битного движка 1С 7.7 на 64-битной серверной ОС выполним системные настройки:

  1. Настройка DEP (Предотвращение выполнения данных): 32-битный исполняемый файл 1cv7s.exe может аварийно зависать из-за работы аппаратного DEP. Добавим исполняемые файлы 1С в исключения DEP или настроим режим включения DEP только для основных программ Windows.
  2. Изоляция временных папок сеансов RDP: в групповых политиках сервера включим использование раздельных временных каталогов для каждого сеанса пользователя. Это предотвратит конфликты при одновременной записи временных файлов отчетов вида *.tmp.
  3. Отключение проверки порядка сортировки: создадим пустой файл с именем ordnochk.prm в каталоге базы данных или в каталоге BIN платформы, чтобы исключить зависания при несовпадении региональных настроек сортировки операционной системы.
  4. Электропитание: в схеме управления питанием Windows Server установим режим «Высокая производительность», чтобы предотвратить падение частоты процессорных ядер при пересчетах.
← На главную