Ситуация, когда 1С:Предприятие 8.3 внезапно перестает отвечать на запросы сразу у всех сотрудников, является одной из самых сложных в диагностике. В этот момент работа предприятия полностью парализуется на несколько минут, а системный мониторинг может показывать противоречивые данные. Разберем подробно причины таких зависаний и пошагово проанализируем методы их устранения, опираясь на практический опыт и технические особенности платформы.
Проанализируем ситуацию, описанную в финале обсуждения: проблема оказалась связана с оборудованием, на котором размещены базы данных. Когда 1С «замирает» на 1-2 минуты, это часто сигнализирует о возникновении очереди к дисковой подсистеме или исчерпании ресурсов кэша контроллера.
Рассмотрим, как это работает: если дисковая подсистема не справляется с потоком данных (например, из-за интенсивной записи логов SQL или работы tempdb), выполнение всех операций ввода-вывода приостанавливается. Для пользователя это выглядит как «белый экран» или «колесико» ожидания. Выясним причину через монитор производительности Windows (PerfMon). Нам необходимо отслеживать показатель «Средняя длина очереди диска» (Avg. Disk Queue Length). Если это значение стабильно выше 2 на один физический диск, дисковая подсистема является «бутылочным горлышком».
В случае, если БД перегружена, единственным верным решением будет миграция на более производительные SSD/NVMe накопители или расширение кэш-памяти дискового контроллера, что и было сделано в рассматриваемом случае.
Посмотрим на настройки SQL Server 2008 R2 (или более новых версий). По умолчанию SQL Server настроен на динамическое управление памятью и стремится занять весь доступный объем ОЗУ на сервере. В условиях, когда на этом же сервере работает rphost (сервер приложений 1С), возникает конфликт ресурсов.
Разберем механизм возникновения фриза: SQL Server забирает 90-95% памяти, 1С требует выделить память под тяжелый отчет или регламентное задание, ОС начинает активно использовать файл подкачки (swapping). Поскольку скорость обращения к диску в тысячи раз ниже скорости ОЗУ, вся система впадает в ступор. Чтобы этого избежать, установим жесткий лимит для SQL Server:
Например, при наличии 32 ГБ ОЗУ, ограничим SQL Server на уровне 20–22 ГБ. Это позволит процессу rphost стабильно работать без ухода в своп.
Проанализируем жалобу пользователя на то, что процесс rphost «много ест памяти». Начиная с платформы 8.3.13, механизмы управления памятью стали более требовательными. Если в конфигурации есть утечки памяти или выполняются неоптимизированные запросы, rphost может раздуваться до критических размеров.
Рассмотрим, как настроить автоматическую перезагрузку рабочих процессов в консоли администрирования кластера 1С:
Если процесс превысит лимит, кластер мягко создаст новый rphost, переведет туда новых пользователей и постепенно завершит старый «прожорливый» процесс. Это предотвратит накопление критической массы ошибок, вызывающих зависание.
Как было замечено в обсуждении, наличие антивируса (например, Касперского) на сервере может существенно тормозить работу 1С. Даже если он не потребляет много процессора в моменте, он может блокировать файлы БД или временные файлы при сканировании.
Выясним, какие исключения необходимо добавить в антивирус для корректной работы 1С:
C:\Program Files\1cv8\...).AppData\Local\Temp)..mdf, .ldf).1cv8.exe, 1cv8c.exe, ragent.exe, rmngr.exe, rphost.exe.Важно: полное удаление антивируса для теста — эффективный метод, позволяющий исключить его влияние на 100%, как и поступил автор темы.
Одной из скрытых причин коллективных «замираний» является регламентное задание «Обновление индекса полнотекстового поиска». В момент индексации больших таблиц могут возникать блокировки на уровне СУБД. Проанализируем состояние этой функции:
Если пользователи не пользуются глобальным поиском по всей базе (строка поиска в заголовке программы), это задание лучше отключить. Перейдем в раздел Администрирование — Поддержка и обслуживание — Полнотекстовый поиск и снимем галочку «Полнотекстовый поиск данных разрешен». Это освободит значительные ресурсы сервера и устранит одну из причин микро-фризов.
Разберем неочевидный технический момент. В Windows Server 2008 R2 по умолчанию может быть включена схема электропитания «Сбалансированная». Это заставляет процессор «засыпать», снижая частоту ядер при отсутствии нагрузки. При резком поступлении запросов от 10 пользователей серверу требуется время на переход в активное состояние, что вызывает лаг.
Установим режим «Высокая производительность» в настройках электропитания сервера. Также рекомендуем проанализировать работу протокола IPv6. В некоторых конфигурациях 1С пытается сначала достучаться до сервера по IPv6, получает таймаут и только потом переходит на IPv4. Отключение IPv6 в свойствах сетевого адаптера часто стабилизирует время отклика системы.
Проанализируем ситуацию с блокировками: если в SQL включена опция Auto Update Statistics, СУБД может решить пересчитать статистику прямо в момент выполнения пользовательского запроса. Это блокирует таблицу. Для 1С рекомендуется:
Если используется SQL Server 2008 R2, убедимся, что установлены последние Service Packs, так как в старых билдах были известные проблемы с распределением памяти и производительностью запросов.
Резюме: Решение проблемы зависаний всегда требует комплексного подхода. Начните с ограничения памяти SQL Server и проверки дисковой очереди. Если это не помогает, переходите к настройке кластера 1С и исключению влияния антивируса. Как показывает практика автора темы, финальным ответом может стать именно аппаратная модернизация дисковой системы или перераспределение памяти оборудования.