Сегодняшняя тема может показаться скучной и неинтересной, но она очень важна, потому что из-за такой вроде мелочи, как не вовремя зависшая 1С, бизнес может потерять очень серьезные деньги.
За примером далеко ходить не нужно: у одного из наших клиентов сеть магазинов верхней одежды. Бизнес сезонный: в обычное время покупателей не так много, но дважды в год в магазинах наплыв покупателей и очереди стоят, даже когда работают все кассы. Если в этот момент зависнет 1С, на которую завязаны все сканеры и кассовое оборудование — продажи встанут в прямом смысле слова. Если все оперативно не восстановится — люди просто уйдут, и вся сеть потеряет выручку.
Меня зовут Алексей Садовенко, я больше 17 лет занимаюсь системным администрированием, десять из которых — руковожу собственной компанией. И в этой статье я расскажу, как этого избежать и что делать, если ваша 1С-ка тоже виснет или работает непозволительно медленно.
Когда зависает 1С
Начать стоит с того, что сценариев, когда 1С начинает тормозить, а пользователи сталкиваются с проблемами в работе программы, довольно много. Каждый из них создает неудобства для работы и замедляет бизнес-процессы:
Проблемы при запуске: 1С либо медленно открывается, либо не запускается вовсе.
Программа зависает при попытке выгрузить отчет.
Зависает 1С при обновлении.
Все виснет и тормозит при работе с документами 1С.
Фоновые задания перестают выполняться.
Все это не просто раздражает пользователей, но и снижает производительность, а в конечном счете ведет к потерям для компании. Причин, из-за которых возникают такие проблемы, тоже может быть достаточно много.
Почему 1С зависает: разбор основных причин
Условно все причины зависания 1С (как и нестабильной работы всей ИТ-инфраструктуры компании, впрочем), можно разделить на две группы: технические и человеческие.
Возможные технические проблемы:
Тормозит сервер. Запросы на обработку и обмен данными могут занимать длительное время. Это замедляет все рабочие процессы и становится невозможно оперативно получить информацию о товарах или сгенерировать отчет.
Зависает 1С Сервер. В этом случае база 1С может быть недоступна вообще, или сотрудники не смогут работать в программе.
Нестабильная сеть. Даже если сервер и база 1С работают нормально, то проблемы с сетью, либо некорректная настройка сетевого оборудования могут помешать корректной работе программы.
Устаревшая инфраструктура. Компании достаточно часто продолжают использовать старое оборудование, не обновляя его в соответствии с растущими потребностями. Например, многие до сих пор хранят данные в папках вместо использования современных баз данных, а 1С может работать на обычном офисном компьютере в углу кабинета, который давно не справляется с нагрузкой.
Некорректная конфигурация серверов. Специфика 1С такая, что даже дорогие и мощные сервера могут быть неэффективны, если они неправильно настроены или собраны. Например, процессоры с низкой частотой и HDD-диски могут значительно замедлять работу программ, несмотря на космическую стоимость оборудования.
Нелицензионное ПО. Использование пиратский версий 1С и другого софта может привести к серьезным проблемам. Например, в ноябре 2022 года , многие компании, использовавшие нелицензионную 1С, столкнулись с массовыми сбоями в ходе работы программы и ее обновления, что повлекло за собой длительные (дни и даже недели) простои в работе и огромные финансовые потери.
Конечно, все это происходит не само по себе. Когда к нам обращается новый клиент, мы всегда стартуем с аудита инфраструктуры и очень часто видим, что первопричина всех технических проблем лежит именно в человеческой плоскости:
В компании нет сисадмина или обслуживающей компании (типично для небольшого бизнеса), и все работает без изменений с того самого времени, когда в самом начале пришли 1С-ники и запустили систему. Поддержки или нет совсем, или она ситуативная.
В компании есть сисадмин, но он не обладает достаточным количеством знаний и опыта в администрировании серверной инфраструктуры для 1С.
В компании есть сисадмин, который понимает, что и как нужно делать, чтобы обеспечить стабильную работу 1С, но руководство не готово выделять средства на обновление и поддержку инфраструктуры.
Интеграторы нередко отмахиваются от клиентов фразами вроде: «Тормозит? Просто купите сервер помощнее», — и оставляют компании один на один с их проблемами.
Казалось бы, интеграторы 1С и айтишники должны быть в одной лодке, но в реальности они чаще всего спихивают ответственность за зависания, медленную работу и лаги друг на друга — и ситуация может оставаться неизменной очень и очень долго. Страдают от этого, конечно, в первую очередь обычные пользователи и бизнес, который в конечном итоге теряет из-за этого деньги. Иногда — очень серьезные.
Как с этим бороться
Если оставить вариант с ситуативным тушением пожаров и затыканием дыр за скобками, то правильный ответ всего один — выстроить ИТ-инфраструктуру в компании таким образом, чтобы она обеспечивала стабильность, безопасность, надежность, высокую скорость работы оборудования и программ, и при этом при необходимости могла безболезненно масштабироваться в соответствии с растущими потребностями бизнеса.
К этому можно прийти, построив систему с нуля или пересобрав то, что уже есть в компании. В обоих сценариях можно сделать так, чтобы все работало, как нужно: 1С не зависала, а бизнес — не терял деньги.
Как это сделать, я покажу на реальном проекте одного из наших клиентов — сети магазинов верхней одежды, которого я уже упоминал в начале.
Этот пример интересен как раз тем, что мы вместе прошли путь от нескольких сотрудников и одного офиса, когда 1С работала в папках, до сети магазинов, где на 1С завязаны все сканеры, кассовая техника, терминалы оплаты, терминалы сбора данных (ТСД) и системы маркировки товаров — и все это должно работать безупречно.
Схематично структуру бизнеса можно представить следующим образом:
10 магазинов и 3 офиса (в составе которых в том числе производства и склады) — масштаб крепкого среднего бизнеса, который уже перерос стартовые решения.
Для бизнеса такого размера критически важно, чтобы ИТ-инфраструктура обеспечивала стабильную и надежную работу сейчас, плюс легко масштабировалась при необходимости.
Для этого нужно:
Клиент-серверный вариант 1С, который лучше всего подходит для работы с высокой нагрузкой.
Защищенный VPN-туннель, который объединяет сеть всех объектов организации: и офисов, и точек продаж.
Возможность подключения удаленных сотрудников к корпоративным ресурсам.
Система резервного копирования как на локальное хранилище для возможности быстрого восстановления, так и на удаленное хранилище, чтобы иметь возможность восстановить данные в том числе в случае шифрования.
Архитектура ИТ-инфраструктуры в этом случае должна выглядеть примерно так:
Почему именно так и как такая архитектура влияет на работу 1С и помогает предотвратить зависание, я сейчас расскажу, но перед этим важно проговорить важный момент.
Как сама архитектура, так и подходы к ее построению — основаны на нашем опыте. Очевидно, такой вариант не является единственным верным, и у кого-то может быть другой опыт организации всего как на верхнем уровне, так и на уровне используемого оборудования: буду рад обсудить ваши подходы и решения в комментариях.
Серверная инфраструктура
Чтобы обеспечить высокую скорость работы 1С и предотвратить ее зависания, в этом случае мы выстроили архитектуру на основе трех серверов по следующей схеме:
Сервер 1:
виртуальный gate для доступа к WAN,
службы удаленных рабочий столов,
файловый сервер,
домен-контроллер.
Сервер 2:
SQL-сервер,
домен-контроллер,
vpn-сервер.
Сервер 3:
кластер серверов 1С,
сервер резервного копирования,
сервер мониторинга.
Со стороны дата-центра сервера объединили в локальную сеть.
Если у бизнеса нет потребности в таком объеме мощностей, такую же логику можно реализовать и на одном физическом сервере при помощи виртуальных машин.
Для стабильной и быстрой работы 1С важно не количество ядер процессоров на серверах, а их тактовая частота и наличие быстрых SSD-дисков, желательно с использованием RAID. Благодаря этому можно значительно сэкономить, так как для этих нужд достаточно процессоров Ryzen 7/9, и нет необходимости переплачивать за более дорогое оборудование.
Сетевая инфраструктура, удаленный доступ, VPN
Для маршрутизации и гибкой настройки фильтрации трафика мы используем комплекс из оборудования Mikrotik и виртуальных шлюзов Mikrotik CHR. Используем именно его, так как Mikrotik:
дает возможность легко масштабировать и адаптировать систему под текущие потребности и задачи,
предоставляет оптимальный набор функций: VPN, маршрутизацию, QoS, маркировку трафика и другие,
удобное сочетание физического оборудования и виртуальных сред.
По нашему опыту, Mikrotik является оптимальным решением благодаря сочетанию цены, качества и функционала. Но мы также часто используем оборудование других вендоров в сочетании с PfSense или с нуля настроенными виртуальными машинами на Linux.
По требованиям безопасности все внешние доступы к серверным ресурсам должны обязательно шифроваться через VPN, чтобы защитить передаваемую информацию от перехвата и несанкционированного доступа.
Между дата-центрами и офисами мы обычно настраиваем протоколы L2TP+IPSec и SSTP. Также используем Wireguard для быстрого переключения на случай блокировок VPN-сервисов, которые в сегодняшней реальности, увы, не редкость.
Такое решение обеспечивает нужную гибкость, необходимый уровень шифрования и стабильно работает в любых корпоративных сетях.
К слову, так как работать через VPN должны удаленные сотрудники, то конечно же, именно они максимально сопротивляются этому нововведению. Но ничего не поделаешь: безопасность есть безопасность, и с этим небольшим неудобством придется смириться.
Базы данных
Для управления базами данных SQL мы используем MS SQL Server и PostgresPro. При этом PostgresPro является более оптимальным решением на сегодняшний день с точки зрения скорости работы, функционала и стоимости обслуживания.
Кластер серверов 1С чаще всего выстроен на базе Windows Server, поскольку 1С изначально разрабатывалась для этой системы, и она более привычна для обслуживания. Однако учитывая текущую ситуацию с импортозамещением, мы все чаще используем Linux и, в целом, не испытываем особых трудностей.
Резервное копирование
Как я уже писал, чтобы иметь возможность быстро восстановить систему в случае любых форс-мажоров, нам нужны локальные и удаленные копии.
Важно делать:
копии дампов баз SQL,
резервные копии серверов/виртуальных машин.
В этом примере для пущей уверенности мы настроили копирование не только на локальные и удаленные хранилища с дальнейшей репликацией, но и дублировали их на сетевом хранилище в головном офисе. Возможно, это избыточно, но всем так спокойнее.
Мониторинг
Мониторинг необходим для своевременной диагностики проблем и их устранения до того, как система 1С зависнет в самый неподходящий момент.
У нас все работает на Zabbix, который автоматически создает заявки в HelpDesk при проблемах, а также дополнительно уведомляет о них через Telegram.
Как только что-то не так с резервными копиями, производительностью, доступностью оборудования, мы сразу получаем заявку и уведомление — и тут же начинаем работу над исправлением проблемы.
Скорость реакции и решение проблемы — ключевые параметры с точки зрения бизнеса, так как даже небольшое промедление здесь может стоить больших денег.
Если рассматривать наш пример, то даже небольшое подвисание системы в сезон, когда в магазинах очереди, будет стоить компании сотни тысяч и даже миллионы рублей потерянной выручки.
Такого, как вы понимаете, допускать никак нельзя.
Несколько выводов в завершение
В этой статье я сознательно сконцентрировался на ИТ-инфраструктуре и ее роли в решении проблем с работой 1С, и не писал про отдельные лайфхаки по их устранению.
Во-первых, о затыкании дыр, тушении пожаров и тех костылях, которые для этого можно применить, можно написать даже не отдельную статью, а целую книгу.
Во-вторых, я убежден (и это убеждение только подтверждается опытом), что на долгой дистанции работает именно описанный подход: правильная, стабильная, надежная инфраструктура, которая обеспечивает бесперебойную работу как 1С, так и всей ИТ-системы бизнеса в целом.
В-третьих, на долгой дистанции такой подход намного выгоднее, так как дает возможность не только не терять деньги из-за сбоев системы, но и экономить на техподдержке и обслуживании.
Комментарии (27)
SGordon123
18.09.2024 13:27а зачем все вязать к одному серверу и через инет - сделайте локальные кассы и торгуйте независимо....
areaho0ray
18.09.2024 13:27+1Тоже не понял. На торговой точке должен стоять локальный сервер, который будет загружать с ЦОДа номенклатуру, цены, промо и так далее и раздавать это по кассам. В случае, если касса напрямую идет к базе в ЦОД - это проблема буквально ежедневная.
ildarz
18.09.2024 13:27+2При наличии стабильной связи это вообще не проблема, зато снижение затрат на инфраструктуру точек вполне очевидное.
VenbergV
18.09.2024 13:27Для торговых точек, кои скорее всего ИП на франшизе, цена лицензий 1С окажется пугающей. Плюс что-то, в виде сервера.
Хотя возможно подойдет Мини Сервер. На 5 подключений. Но не знаю как он работает с торговым оборудованием и отраслевыми решениями.
m2377
18.09.2024 13:27+3Так как автор упоминает торговлю розничной одеждой, почти вся одежда сейчас маркируются. Перед продажей должен быть передан апи запрос до честного знака. Для запроса нужны сертификаты с цифровой подписью. А так же документы для передачи товара, нужны документы ЭДО.
Распределенная структура или даже РИБы здесь не подойдут. Нужна именно клиент-серверная структура.
А умеет ли 1С корректно работать при указанной Вами схемой, я не уверен.
DvoiNic
18.09.2024 13:27распределенная система с "разрешительным порядком продажи" на кассах вполне нормально работает. ЭДО тоже работает, хотя я не понимаю, зачем оно вам в кассовых узлах.
m2377
18.09.2024 13:27Сам работал не так давно в компании, кто торгует одеждой.
ЭДО нужен по двум причинам:
1) Комиссионный товар.
2) Магазины были на разных юридических лицах.
Так что в момент оприходования товара, нужно было формировать и подписывать ЭДО.
Yumado
18.09.2024 13:27+2Проблематичная схема в каждом магазине по сервачку.
На 60 магазинах дополнительных 60 точек отказа.
Как только отказались от сервачков в магазинах, авралы в админке стали значительно реже. И потребность в админах упала.
А обновление ПО? по 60 магазинам проверить 60 сервачков.
Не рационально.
Но если у вас план не быть уволенным. Остаться обновляльщиком.
Тогда конешн.
AlexSadovenko Автор
18.09.2024 13:27+1Согласен, поступило много комментариев касательно распределительной системы. Интересно, какой у них опыт работы с подобными системами и сколько точек в их инфраструктуре. У нас был опыт взаимодействия с клиентами, которые начинали с распределительной системы, но на момент обращения к нам имели всего 1-3 точки. В процессе расширения мы переводили их на централизованную систему, при этом все изменения проводились при поддержке и полном согласии специалистов 1С.
AlexSadovenko Автор
18.09.2024 13:27+2Несколько лет назад этот вариант еще использовался, но на данный момент у нас нет ни одного клиента, который бы так работал. Затраты на обслуживание каждой локальной точки значительно выше, а при синхронизации с центральной базой часто возникают сбои. Кроме того, клиенту необходимо видеть продажи и остатки в режиме реального времени, так как часто товары из магазинов отгружаются в том числе на маркетплейсы.
VenbergV
18.09.2024 13:27+1Ваша статья вызвала неоднозначное впечатление. У вас есть некоторая непоследовательность. Типичная для неаккуратного маркетинга.
Вы в технические проблемы записываете офисный пк и тут же предлагаете пользовательские Ryzen.
У вас в причинах зависания 1С описывается отсутствие средств на модернизацию и поддержку. А вы, простите, за бесплатно готовы провести все работы и обеспечивать долгосрочную работу инфраструктуры?
Ни в коем случае не хотел вас обидеть, но внимательный руководитель очень плохо отнесется к таким несовпадениям аргументации вашего, возможно прекрасного, предложения.
P.S. Ну и очень плохо сочетается новый MS SQL/Server и борьба с нелицензионным ПО.AlexSadovenko Автор
18.09.2024 13:27+1В дата-центрах доступны в аренду серверы с процессорами Ryzen, и это не считается потребительским решением. Эти процессоры обладают высокой производительностью и отлично подходят для некоторых серверных задач, включая работу 1С.
Компании обычно уже тратят средства на обслуживание своей инфраструктуры, наша цель — помочь им делать это более эффективно. И всё верно — мы не делаем работы бесплатно)
Несмотря на некоторые трудности, использование лицензионного ПО все еще возможно. Кроме того, существуют альтернативы в виде свободного программного обеспечения, которые мы предлагаем использовать, чтобы снизить затраты и избежать проблем с нелицензионным софтом.
wwladimir
18.09.2024 13:27Лет 20 назад на курсах Microsoft меня учили что
SQL-сервер,
-
домен-контроллер,
вместе - недопустимое сочетание из за разных требований к кешированию дисковых операций. Сейчас что-то изменилоь?
AlexSadovenko Автор
18.09.2024 13:27+1так вместе и не ставим, это разные вм
jackchickadee
18.09.2024 13:27разные вм
замечательно. пробовали ли вы оценить потерю производительности БД и сервера приложений 1С за счет виртуализации ?
AlexSadovenko Автор
18.09.2024 13:27Если использовать современные серверы, то потерю производительности при работе с вм вы не заметите. У нас даже бывают споры с 1с-специалистами, которые просят развернуть 1с без виртуализации, считая, что так будет быстрее. Я считаю это пережитком прошлого, поэтому предлагаем развернуть систему с использованием виртуальных машин и, если не устроит скорость, за свой счёт перенесём все на физическую машину. За все время не было случаев, чтобы нас просили это сделать.
jackchickadee
18.09.2024 13:27Если использовать современные серверы
то придется платить как за современные серверы + налог на импортозамещение.
рассмотрим другой аспект.
если будет всплеск нагрузки на 1С типа "акция + распродажа",
то кто лучше справится - виртуалка или bare metal ?ps: "Например, в ноябре 2022 года" легалки 1С кто не обновлялся тоже получили сюрприз. и облачные 1С тоже.
ildarz
18.09.2024 13:27+1У вас либо есть ресурсы, чтобы выдержать пиковые нагрузки, либо их нет, а физические они или виртуализованные - в подавляющем большинстве случаев не играет вообще никакой роли.
AlexSadovenko Автор
18.09.2024 13:27+1Современные сервера, это не hdd диски, процессоры не 6 поколения и память не ddr3... Сейчас на все оборудование действует налог на импортозамещение), даже на то, которое было ввезено три года назад.
Если говорить о вашем примере, то, на мой взгляд, разница в производительности будет минимальной или вовсе отсутствовать. Подчеркну, что это основано на нашем опыте работы с 1С. Есть проекты, где важна каждая миллисекунда, и в таких случаях мы не используем виртуализацию. Но именно в 1С мы с такими запросами не сталкивались. А вот если сервер выйдет из строя, время на восстановление с нуля существенно отличается в пользу виртуализации.
Не совсем понимаю причем тут 1с, которые не обновляли.
Unbearability
18.09.2024 13:27виртуалка или bare metal ?
Конечно bare metal. Процентов на 10%. Можно еще 1С кластер и СУБД не разносить и поставить на одной физической машине -- за счет shared memory еще процентов 10-20% можно будет выиграть. Только вот при резком росте нагрузки это не поможет. А вот управляемость, стоимость эксплуатации, отказоустойчивость, скорость восстановления и прочее, прочее сильно пострадают.
На мой взгляд лучше использовать виртуалки и при кратном росте нагрузок увеличивать их ресурсы и/или думать как масштабировать систему чтобы пережить пик.
saag
18.09.2024 13:27А в RAM-диск 1С загружать не было такого?
AlexSadovenko Автор
18.09.2024 13:27+1такого опыта нет, да и в целом может это уже и не так необходимо если использовать NVMe диски
Unbearability
18.09.2024 13:27А зачем? Если только файловая БД, но это история не про средние и большие нагрузки. В клиент-серверном варианте и так оперативные данные БД в оперативке в кэше.
Что у 1С (не СУБД) требовательно к I/O я вот так сходу даже придумать не могу. Сеансовые данные разве что, но они и так мапятся в RAM.
ildarz
Как интересно. Лично я бы с удовольствием почитал про большую оптимальность функционала (!) Postgres в разрезе 1С, равно как и посмотрел на расчет стоимости обслуживания.
AlexSadovenko Автор
Уточнение, речь идёт о PostgresPro, а не о чистом PostgreSQL. PostgresPro — это уже оптимизированная версия для работы с 1С, которая включает патчи для повышения производительности и стабильности при работе с 1С. Дополнительно к этому есть техническая поддержка продукта и возможность без проблем приобрести ПО, с MS SQL сейчас сложно в этом плане из-за санкций. Если у вас уже есть лицензии или нужно поднять типовую конфигурацию без доработок до 100 человек, то да - "из коробки" MS SQL будет лучше по производительности и простоте внедрения\обслуживания.