Когда 100 пользователей жалуются на «подвисания» в журналах документов или при открытии справочников, первая реакция — обвинить старую версию конфигурации или «обычные формы». Однако, как показывает практика, проблема чаще кроется не в архитектуре интерфейса, а в том, как именно сервер 1С и SQL Server делят ресурсы между собой. Давайте разберем по шагам, как выявить корень проблемы и оптимизировать работу системы.
Первое, на что стоит обратить внимание — это совмещение ролей сервера. Если у вас на одном физическом железе одновременно запущены SQL Server, Сервер приложений 1С и терминальный доступ (RDP), вы неизбежно столкнетесь с борьбой за ресурсы.
В такой конфигурации, когда пользователи массово открывают журналы, происходят следующие процессы:
rphost процессы, которые также потребляют значительный объем RAM.Если памяти не хватает, операционная система начинает активно использовать файл подкачки (swap), что моментально замедляет работу всей системы. Даже если вы видите, что занято 70% памяти, это не гарантирует отсутствие нехватки ресурсов в моменты пиковых нагрузок.
Многие системные администраторы совершают ошибку, оставляя max server memory в настройках SQL Server по умолчанию. В этом случае база данных «съедает» столько, сколько видит, вытесняя другие процессы.
Рассмотрим, как правильно настроить лимиты:
max server memory.Важно: Всегда оставляйте операционной системе и процессам 1С не менее 15-20% общего объема оперативной памяти. Это предотвратит конкуренцию за ресурсы и «зависания» всей операционной системы.
Если «подвисает» конкретный справочник (например, Контрагенты) или журнал, значит, при открытии формы 1С отправляет запрос, который SQL выполняет недопустимо долго. Чтобы найти этот запрос, нам понадобятся инструменты мониторинга:
DBPROC или DBMSSQL, чтобы зафиксировать запросы, время выполнения которых превышает, например, 5 секунд.Именно с помощью Технологического журнала можно увидеть, какая именно часть кода 1С инициирует тяжелый запрос к таблицам базы данных.
Базы данных 1С, особенно «давнишние», требуют регулярной «гигиены». Если статистика устарела, оптимизатор SQL будет выбирать неэффективные планы выполнения запросов.
Проанализируем необходимые регламентные работы:
Maintenance Plans или скрипты для автоматического обслуживания.В 1С (особенно в обычных формах) журналы часто реализованы через Динамические списки. Посмотрим, почему они могут «тормозить»:
Table Scan).JOIN) с другими тяжелыми таблицами.Совет: Проверьте, какие поля выведены в журнале. Попробуйте максимально упростить запрос списка. Если вы используете Произвольный запрос в динамическом списке, убедитесь, что все поля, участвующие в условиях отбора, имеют соответствующие индексы в базе данных.
Чтобы решить проблему, действуйте последовательно:
Технологического журнала в момент «подвисания».Table Scan, который лечится созданием недостающего индекса.Помните, что «подвисания» — это всегда следствие либо нехватки аппаратных ресурсов, либо неэффективного SQL-запроса. Анализируйте ситуацию, используйте профилирование и не бойтесь глубоко смотреть в то, как 1С общается с базой данных!