База ещё живая, но уже ворчит: как 1С медленно «устаёт» без ухода
Привет, это СБиСик — пушистый, слегка лукавый консультант, который каждый день слышит примерно одну и ту же фразу: «Ну да, 1С подтормаживает, но ведь работает же». И каждый раз я вздыхаю, наливаю себе чай и вспоминаю, как в прошлый вторник менеджеры по продажам оформили счёт на пару минут позже, клиент передумал, а руководитель списал всё на «очередной глюк программы». Слишком знакомо, правда?
Что происходит с базой, когда «ничего не происходит»
В первый месяц после внедрения всё летает: документы открываются за секунду, отчёты щёлкают как семечки, пользователи счастливы. Потом приходит реальная жизнь. Бухгалтерия растит обороты, склад заводит новые позиции, интеграции подтягивают заказы с сайта, айтишник параллельно прикручивает обмен с банком. База толстеет, но никто не назначает ей спортзал.
Сначала изменения почти незаметны — лишняя секунда на проведение накладной, кому она мешает? Потом секунд становится десять, а в конце квартала бухгалтер ловит себя на том, что закрытие месяца тянется до полуночи. И всё ещё «работает», да. Просто зарплату людей теперь берём в том числе из их ожидания перед серым экраном. Эта часть расходов обычно прячется под ковром, но ковёр не резиновый.
Технически же база копит «мусор»: висят неиспользуемые регистры, журналы логаются без лимита, статистика индексов устаревает, обновление платформы пропущено, а на сервере SQL последние оптимизации видел только динозавр DBA, ушедший в отпуск в 2019-м. Обслуживание 1С в такой ситуации превращается из профилактики в потенциальную операцию на открытом сердце.
Кстати, короткие наблюдения из серии «поймал тормоз — записал, пока горячо» я обычно выкладываю в наш канал в MAX. Там формата две строки хватает, чтобы зафиксировать симптом и потом не потерять его среди писем и тикетов.
Как эта тихая деградация выглядит для людей
Истории из практики собираются как коллекция марок. Вот свеженькая. Склад утром сопротивляется: приходят две фуры, ТСД щёлкают штрихкоды, а база замирает на «Обновлении остатков». Рабочие курят, логистика ругается, начальник склада на громкой связи орёт «срочно перезвоните программисту!». Мы подключаемся — блокировки по 20 000 строк, индекс на табличке движений не перестраивался шесть месяцев. Небольшая профилактика заранее заняла бы час ночью, а теперь мы играем в live-хирургию среди рабочего дня.
Ещё пример: отдел продаж. Один из менеджеров строго в 11:45 проводит пакет из 40 реализаций — клиентская привычка. Раньше он успевал до обеда, но база уже второй месяц «думает» минут по пятнадцать. Обед съезжает, нервы на взводе, а вечером всплывает, что пара документов ушла в автовозврат из-за превышения таймаута сервиса ЭДО. Догонять контрагента потом дороже, чем держать сервер в форме.
На стороне руководства ситуация ещё тоньше. Цифры начинают плясать: управленческий отчёт на 9 утра показывает маржу 21 %, а в 14:00 — уже 18 %. Причина — разные сроки попадания документов в регистры, потому что ночью базу балансировало «как получится», а днём сеансов слишком много. Руководитель смотрит и не понимает: это реальные колебания или «магия учёта»? Теряется доверие к системе в целом.
Эти и ещё куча коротких историй мы уже поднимали у нас в Telegram-канале — там обсуждаем без длинных графиков, просто по факту: что сломалось, сколько стоило времени и нервов, как починили.
Почему медленное 1С — это не про комфорт, а про деньги
Иногда я прошу заказчика посчитать: сколько сотрудников во сколько минут опаздывают из-за замедлений. Ответ обычно начинается с: «Ну, пять минут ерунда». Хорошо, умножаем пять минут на пятьдесят человек в день, получаем больше трёх часов оплаченного простоя. В месяц набегает почти рабочая неделя. А в квартал? Плюс нервные переговоры, плюс неотгруженный товар, плюс время на расследование “откуда ошибка в НДС”. В итоге тормозит 1С превращается в отдельную статью расходов, просто скрытую внутри ведомостей.
Ещё одна скрытая дыра — аварийное восстановление. Пока всё крутится, резервная копия интересует только админа-перфекциониста. Но как только вирус шифрует диск или база падает по питанию сервера, бизнес внезапно понимает цену последних шести часов ввода документов. Пытаешься объяснить, что копия от пятницы — это минус четыре дня работы, и видишь, как бухгалтера бледнеют, будто услышали слово “камералка”.
Я совсем недавно ловил ситуацию: на первый взгляд всё ОК, бэкап крутится по расписанию, но оказался на том же RAID-массиве, где и база. Диск умер, копия умерла вместе с ним. Итог — вручную заводили реализации за три дня по фотографии товарных накладных. Зачем фото? Да потому что сканы потеряли, уж слишком сложная архивация. Виктория, ведущий бухгалтер, до сих пор вздрагивает при слове «резервное».
Заблуждения, которые подпитывают проблему
Самое упорное — «если система открылась, значит всё в порядке». 1С может стартовать и на зубном порошке, вопрос, сколько ей нужно, чтобы выполнить привычные операции. Как кардиолог скажет: «Он же ходит», — но это не значит, что инфаркт не за углом.
Другая ловушка — «обновления нужны только ради нового интерфейса, а мне и так норм». На самом деле каждая версия приносит фиксы косяков, которые накопились у ваших пользователей. Но пока ошибка не выстрелит в отчётности, мы делаем вид, что её нет. Потом удивляемся, почему декларация не сошлась, а техподдержка отвечает: «Исправлено в релизе от января». Января какого года — уже неважно, главное, что у вас март следующего.
Ну и классика жанра: «Резервная копия вчера была, сегодня успеем снова». Увы, сбои любят самые неудобные моменты — чаще всего в режиме подписания договора, закрытия периода или перед сдачей СЗВ-М. Отменить дедлайн нельзя, остаётся только срочная гимнастика с восстановлением, пересчётом и ручным добиванием потерянного. Сколько стоит лишняя ночь бухгалтера в офисе? Сколько стоит подорванное доверие клиента, который не получил счёт вовремя? Задайте эти вопросы финансисту, он подскажет цифры с холодной точностью.
На самом деле список иллюзий длиннее, я иногда фиксирую их в заметках «Мифы об обслуживании», но об этом позже — как раз собираюсь показать пару кейсов, где пропущенный апдейт превратил простое обновление в многодневную эпопею с ручным слиянием конфигураций. История будет вкусная, потому что дорабатывал базу бывший сотрудник, а документацию он так и не написал…
Однако прежде чем мы нырнём в эти дебри, стоит оговорить, что именно входит в регулярный уход за системой: начиная от банального пересчёта индексов и заканчивая мониторингом журналов регистрации. Обещаю, там всплывает столько неожиданного, что скучать не придётся. Так вот, как раз на днях я поймал в логе одну любопытную ошибку —
Ошибка из лога и что за ней скрывалось
…«Нарушена уникальность ключа в таблице _Document4370» — строчка будто ничем не примечательная. На деле за ней стоял целый клубок: база давно не чистила помеченные на удаление документы, таблица разрослась до полумиллиона строк, индекс устарел, а параллельно три пользователя пытались провести одно и то же перемещение. Классический пример, когда мелкая техническая деталь раскручивается в остановку склада на сорок минут. Сняли блокировки, перекатили индекс, выгребли «помеченные» — время отклика упало с 12 с до 2 с. Простая профилактика, но только после того, как боль уже случилась.
Такие находки случаются регулярно. И каждый раз я убеждаюсь: обслуживание 1С — это не про «почистить мусор», а про защиту рабочего дня. Если база тихо растёт без контроля, любая операция может стать последней каплей: случайный «пакет документов» от отдела продаж, тестовый импорт из Excel или аналитик, который решит запустить хитрый отчёт в прайм-тайм.
Чек-лист: пять сигналов, что вы близки к красной зоне
1. «Документ ещё грузится? Да он раньше за секунду открывался». Если задержка выросла вдвое-втрое, это уже тренд, а не погода на сервере.
2. Регламентные задания стали переносить на ночь «потому что днём мешают». На самом деле это маскировка деградации: система не справляется под обычной нагрузкой.
3. В журнале регистрации появляются повторяющиеся ошибки, но их просто закрывают крестиком. База кричит «проверь меня», а мы делаем вид, что не слышим.
4. SQL-сервер периодически уходит в 100 % CPU. Да, иногда это отчёты «All-in-one», но чаще — разбалансированные индексы и фрагментированные таблицы.
5. Резерная копия почему-то весит столько же, сколько месяц назад. Значит, либо файловый уровень не берёт свежий дифф, либо копия встаёт с ошибкой. Вы бы заметили, если б проверяли.
Что включает нормальный график ухода
— Ежедневно: контроль успешности бэкапов, размер журнала регистрации, свободное место на диске. Автоматизируется скриптами — дел десять минут.
— Еженедельно: тестовое восстановление копии на отдельном стенде. Не полное? Хотя бы открыли базу и провели документ, убедились, что живёт.
— Ежемесячно: пересчёт статистики SQL, дефрагментация индексов, проверка целостности конфигурации, чистка старых записей RAS-кластера. Звучит страшно, делается ночью, пользователи не заметят.
— Ежеквартально: обновление платформы и конфигурации, ревизия доработок, аудит производительности. Именно тут «вдруг» находится старый запрос, который сканирует регистр движений без индекса и вешает базу каждую отчётную дату.
— Раз в полгода: нагрузочное тестирование. Не обязательно целый стенд с роботами — хотя бы имитация работы ключевых ролей. Иначе выяснится, что новый обмен с маркетплейсом удвоил объём документов, а сервер тот же.
Если расписание кажется длинным, вспомните, сколько часов ушло на последний форс-мажор. Правило простое: час профилактики сегодня экономит восемь часов аврала завтра.
Сколько это стоит и кто отвечает
Самый сложный вопрос, который задают собственники: «Мы уже платим зарплату айтишнику, почему он не смотрит?» Ответ: у айтишника в приоритете сеть, почта, VPN, принтеры. Базу он трогает, когда она орёт. Поэтому и придумано сопровождение 1С — отдельная роль, где специалисты именно живут в логах, отчётах мониторинга и патч-нотах.
По деньгам диапазон широкий: от пары тысяч в месяц за минимальный контроль до серьёзных тарифов с 24/7 и SLA. Но даже «лайт»-подписка отбивается первой же ночью, когда упавший жёсткий диск не превращается в простой склада. Главное — договоритесь, кто за что отвечает: разработка, обновления, база данных, железо. Нечёткие зоны ответственности — вечный источник недопониманий.
Частые вопросы, которые я слышу
«Мы маленькие, нас не тронет». Ошибки объём не выбирают. Видел базу на 40 Гб, где три пользователя парализовали работу всей компании, потому что одновременно закрывали месяц.
«Давайте сразу купим новый сервер, и всё полетит». Сервер — как новый мотор без техобслуживания: первое время рёв внушает доверие, а через год-полтора проблемы возвращаются, только уже дороже.
«А если просто добавить оперативки?» Добавьте, но индекс всё равно фрагментирован, запросы пишут пользователи, а RPO по бэкапам остался в области фантастики.
«Мы сами нагуглим скрипт, почистим логи». Не вопрос. Только не забудьте, что после чистки статистику надо перестроить, а cfg-файл перевыложить без кеша. Раз-два пропусков — и получаете «невозможно подключиться к базе» в понедельник утром.
Короткие истории-предупреждения
• Производство. Автомат присылает данные ОТК прямо в 1С. В какой-то момент канал падает, очереди копятся, а база продолжает писать ошибки во внутренний журнал — 15 Гб лишних логов за три дня. Диску хватило до утра пятницы, потом вся ИТС-система встала. У борта простояла линия на 300 000 ₽.
• Розница. Интеграция с эквайрингом. Обновление банка вышло, а они откладывали своё уже два релиза. И вот касса печатает чек, платёж уходит в никуда, девушка на кассе вручную пробивает возврат. Очередь растёт, клиенты спорят. Звонок нам — «срочно поднимите обмен». А можно было нажать «обновить» в регламентные сроки.
• Логистика. Гос-ИС изменила формат ФГИС Меркурий. До обновления оставалась неделя, но «некогда» — отгрузки в сезон. Итог — 120 сертификатов не прошли, фура встала на границе, штраф. Зато теперь руководитель лично спрашивает, когда следующее обслуживание.
Если вдруг думаете, что всё это не про вас
Попробуйте простой эксперимент: завтра утром зафиксируйте, сколько секунд открывается Справочник “Контрагенты”. Повторите через две недели. Если цифра растёт — база уже подаёт сигналы. Услышать их или нет — выбор компании.
И да, тот самый индекс на «движениях» сегодня жив, но мы оба знаем, что через полгода он снова попросит внимания. Такой уж у нас с вами цикл: бизнес растёт, данные пухнут, а мы держим баланс между скоростью и хаосом. Делайте профилактику, и 1С будет помощником, а не сюрпризом.
Вопрос напоследок: сколько именно минут в день офис тратит на «подождать, пока сервер подумает»? Поставьте секундомер, удивитесь — и расскажите, что вышло. Я люблю такие цифры, они лучше всякой рекламы объясняют ценность регулярного ухода.