Почему 1С тормозит при закрытии месяца и что с этим делать
Отчёт, который в обычный день считается минуту, в конце месяца висит сорок. Разбираем настоящие причины по порядку — от блокировок до нехватки памяти под СУБД.
Закрытие месяца — единственный момент, когда база получает нагрузку, к которой её никто не готовил. В обычный день десять человек работают с документами по очереди. В последний день месяца те же десять человек одновременно перепроводят документы за весь период, а сверху считается регламентная операция. Отсюда и разница между «минута» и «сорок минут» на одном и том же отчёте.
Причина первая: блокировки
Перепроведение документов задним числом ставит блокировки на регистры. Пока один пользователь перепроводит январь, остальные ждут. Внешне это выглядит как «зависло», хотя сервер в этот момент почти не загружен. Первое, что стоит посмотреть, — не процессор, а журнал ожиданий на блокировках.
Причина вторая: памяти хватает только на бумаге
Типовая ошибка — считать оперативную память одной кучей. Сервер 1С и СУБД конкурируют за неё, и в пике СУБД вытесняет кэш на диск. С этого момента любой отчёт упирается в дисковые операции. Память под 1С и под СУБД должна быть разделена заранее, а не отдана «сколько попросит».
Причина третья: файловая база
Файловый вариант перестаёт справляться примерно там же, где заканчивается терпение бухгалтерии: пять-шесть одновременных пользователей и база за несколько гигабайт. Дальше помогает не более быстрый диск, а переход на SQL — про него отдельный разбор.
Что делать по порядку
Сначала измерить, а не докупать. Посмотреть журнал регистрации в пиковый час, снять счётчики по памяти и дискам, проверить, сколько людей реально работают одновременно. В девяти случаях из десяти узкое место находится за час и оказывается не тем, на что грешили.