· 7 мин чтения

Почему тормозит 1С: с чего начать диагностику

Когда 1С тормозит, причина почти всегда лежит в одном из пяти мест: сеть и канал, сервер и диски, настройки СУБД, блокировки и тяжёлый код (запросы и проведение документов). Начинать нужно не с перезагрузки и не с покупки железа, а с ответа на вопрос, что именно медленно: открытие программы, формирование отчёта, проведение документа или всё сразу. От этого зависит, куда смотреть.

Сначала уточните симптом

Фраза «1С тормозит» ничего не говорит о причине. Задайте пользователям несколько простых вопросов и запишите ответы.

  • Медленно у всех или у одного рабочего места?
  • Медленно всегда или в определённые часы (начало дня, закрытие месяца)?
  • Тормозит запуск, открытие списка, проведение документа, отчёт?
  • Это началось после обновления, добавления пользователей, изменения сети?

Если медленно у одного человека, смотрите его компьютер, профиль, антивирус, подключение. Если у всех и в одно и то же время, ищите общую причину: сервер, блокировки, фоновые задания. Так вы сокращаете область поиска с самого начала.

Проверяем сеть и клиентские места

Для файловой базы сеть критична: клиент читает файлы напрямую, и любые потери пакетов или Wi-Fi вместо кабеля дают заметную задержку. Для клиент-серверного режима сеть тоже важна, но нагрузка на неё иная.

Что я обычно смотрю в первую очередь:

  1. Как подключено проблемное место: кабель, Wi-Fi, VPN. Через VPN с большой задержкой работа с файловой базой почти всегда мучительна.
  2. Есть ли потери и скачки задержки до сервера.
  3. Не сканирует ли антивирус каталог базы и временные файлы 1С в реальном времени.
  4. Достаточно ли на клиентском компьютере памяти и свободного места на системном диске.

Удалённые сотрудники на файловой базе через интернет это отдельная проблема. Обычно её решают переходом на клиент-серверный вариант с терминальным доступом или веб-клиентом, а не настройкой.

Сервер: процессор, память, диски

На сервере проверьте загрузку в проблемные часы. Мониторинг по факту, а не по ощущениям: загрузка процессора, свободная память, очередь на дисках. Диски часто оказываются узким местом, особенно если на одном физическом массиве лежат и база, и файлы, и резервные копии, и ещё что-то.

Типичные находки:

  • на сервере выключен или упёрся в лимит параметр, ограничивающий память СУБД;
  • журналы транзакций и временные базы лежат на медленном диске;
  • виртуальная машина делит ресурсы с соседями, и в часы пик их не хватает;
  • нет свободного места, и СУБД работает на пределе.

Если у вас нет постоянного наблюдения за сервером, настройте его. Как это организовать без громоздких систем, описано в статье про мониторинг сервисов и уведомления о сбоях.

СУБД и обслуживание базы

Клиент-серверная 1С работает поверх СУБД, и её состояние напрямую влияет на скорость. Здесь важны регулярное обслуживание индексов, актуальная статистика и корректные настройки. Конкретные параметры зависят от СУБД, версии и нагрузки, поэтому универсальных значений не существует, и я не буду их придумывать. Ориентируйтесь на рекомендации разработчика платформы и документацию вашей СУБД.

Базовая гигиена выглядит так:

  • по расписанию обновляется статистика и перестраиваются индексы;
  • выполняются регламентные операции обслуживания;
  • размер базы и таблиц-лидеров периодически просматривается, чтобы заметить неконтролируемый рост (например, разросшиеся регистры или журнал);
  • старые данные архивируются или сворачиваются по принятой в компании политике.

Блокировки и фоновые задания

Если база «замирает» на минуту и снова оживает, а в это время проводятся документы, подозревайте блокировки. Два пользователя пытаются работать с одними и теми же данными, и один ждёт другого. Иногда виновата не нагрузка, а алгоритм проведения: документ блокирует больше, чем нужно, или транзакция слишком длинная.

Что проверить:

  • в консоли кластера серверов и в мониторинге блокировок видны ожидающие сеансы;
  • в журнале регистрации можно найти ошибки таймаута блокировок;
  • регламентные задания (обмены, пересчёты, закрытие периода) не запущены ли в рабочие часы;
  • нет ли «зависших» сеансов, держащих блокировки.

Частая картина: в 9 утра пользователи начинают работу, а по расписанию как раз запускается тяжёлый обмен с сайтом. Простой перенос задания на другое время иногда решает проблему, не трогая код. Про устройство обменов с сайтом можно прочитать в статье про обмен 1С с сайтом и типичные ошибки.

Тяжёлые запросы и код

Если инфраструктура в порядке, а медленно только конкретное действие, смотрим код. Для этого есть технологический журнал и замер производительности в самой платформе. Они показывают, какие запросы выполняются дольше всего и сколько раз вызываются.

Типичные программные причины:

  • запрос в цикле: по одному обращению к базе на каждую строку документа;
  • выборка без нужных отборов и без использования индексов;
  • обращение через точку к реквизитам ссылок в запросе, порождающее лишние соединения;
  • отчёт без отборов по умолчанию, который за раз читает за все годы;
  • избыточные подписки на события, срабатывающие на каждый документ.

Небольшой пример с замером времени фрагмента кода, чтобы понять, где потери:

НачалоЗамера = ТекущаяУниверсальнаяДатаВМиллисекундах();

// проверяемый фрагмент
Результат = ЗапросПоДокументам.Выполнить();

Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЗамера;
ЗаписьЖурналаРегистрации("Замер.Запрос",
    УровеньЖурналаРегистрации.Информация,,,
    "Длительность, мс: " + Длительность);

Это грубый инструмент, но он быстро показывает, где стоит копать глубже штатными средствами.

Что можно улучшить, не трогая код

Прежде чем заказывать переработку, пройдитесь по списку недорогих мер:

  1. Перенесите тяжёлые регламентные задания на нерабочее время.
  2. Уберите антивирусное сканирование каталога базы.
  3. Проверьте, что платформа и конфигурация обновлены до поддерживаемых версий.
  4. Ограничьте отчёты разумным периодом по умолчанию.
  5. Выделите базе нормальные диски, не общие с файловыми хранилищами.

Если после этого узкое место осталось, дальше уже оценивайте стоимость оптимизации. Из чего она складывается, описано в материале о стоимости доработки 1С.

Как не потерять результаты диагностики

Диагностика тормозов часто растягивается на недели, потому что результаты не фиксируются. Ведите простой журнал: дата, симптом, что проверили, что изменили, что получили. Меняйте за один раз только одну вещь, иначе вы не поймёте, что именно помогло. Если вы перенесли задание, обновили статистику и добавили память одновременно, а стало быстрее, вы не узнаете причину и не сможете повторить успех на другой базе.

Хорошо, если у вас есть эталонные замеры: время открытия документа, проведения типового заказа, формирования ключевого отчёта. Снимите их в спокойное время, а затем сравнивайте в моменты жалоб. Тогда разговор с пользователями переходит из режима «стало медленно» в режим «проведение выросло вдвое по сравнению с прошлым месяцем», и поиск причины становится предметным.

Когда нужно привлекать специалиста

Часть проверок выполняется силами системного администратора: сеть, диски, антивирус, ресурсы сервера. Но разбор технологического журнала, анализ планов запросов и оптимизация кода уже требуют опыта программирования в 1С и знания СУБД. Если после базовых шагов проблема не ушла, лучше сразу собрать для исполнителя набор данных: версия платформы и конфигурации, тип СУБД, число пользователей, время, когда видны тормоза, и конкретные действия, которые тормозят.

Частые вопросы

Поможет ли покупка более мощного сервера?

Иногда да, но без диагностики это лотерея. Если проблема в блокировках или запросе в цикле, мощное железо лишь отодвинет момент, когда всё снова замедлится. Сначала выясните, что именно упирается в ресурс.

Почему 1С стала тормозить после обновления?

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

Файловая или клиент-серверная база, что быстрее?

Для небольшого числа пользователей в одной локальной сети файловая база работает нормально. С ростом числа пользователей, объёма данных и удалённых подключений клиент-серверный вариант обычно оказывается устойчивее. Границы зависят от конкретной конфигурации и нагрузки.

Нужно ли уменьшать размер базы?

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

Если диагностика затянулась или нужна оценка доработок для ускорения, загляните на страницу о доработке и интеграциях 1С или напишите мне в Telegram.