Многие системные администраторы и владельцы небольших торговых сетей сталкиваются с классической проблемой: есть центральный офис с файловой базой 1С и несколько удаленных торговых точек (магазинов). При попытке подключить удаленные кассы напрямую к файловой базе через сетевую шару SMB (даже поверх быстрого VPN или GRE-туннеля) скорость работы программы падает до критического уровня. Открытие базы может занимать до нескольких минут, а проведение чека превращается в мучительное ожидание.
В этой статье мы подробно разберем, почему традиционный сетевой доступ к файловой базе обречен на тормоза, как публикация базы на веб-сервере Apache или IIS решает эту проблему, стоит ли связываться с РИБ (распределенными информационными базами) и как правильно настроить серверную и клиентскую части для достижения максимальной производительности.
Рассмотрим стандартную ошибку: базу данных 1С размещают в общей сетевой папке (расшаривают по протоколу SMB), а на удаленных компьютерах настраивают обычное подключение, указывая путь к каталогу. Даже если пропускная способность канала составляет 100 Мбит/с, а пинг минимален, работа будет невыносимо медленной. Выясним причину этого явления.
Протокол SMB (Server Message Block) разрабатывался для обмена файлами, но совершенно не приспособлен для работы с базами данных, требующими постоянных транзакций чтения и записи множества мелких порций данных. При работе в таком режиме происходят следующие процессы:
SMB файлы блокировок (*.1cd-journal, *.lck) постоянно открываются, перезаписываются и закрываются.SMB превращается в слайд-шоу, так как на каждое простейшее действие уходит множество последовательных сетевых запросов.VPN-туннеля или зависание клиентского компьютера в момент записи транзакции гарантированно приводит к повреждению файловой базы данных (ошибки формата потока, нарушение логической целостности).Важный вывод: Работать с файловой базой 1С через сетевую шару (особенно удаленно) категорически запрещено как из-за крайне низкой производительности, так и из-за высокой опасности потери данных!
Чтобы кардинально повысить скорость работы без перехода на дорогостоящий клиент-серверный вариант (с использованием СУБД MS SQL или PostgreSQL), необходимо исключить протокол SMB из схемы взаимодействия. Для этого базу публикуют на веб-сервере (Apache или IIS).
Проанализируем, почему этот способ работает в разы быстрее:
Тонкий клиент 1С. Вся тяжелая вычислительная работа (выполнение запросов, проведение документов, расчеты) переносится на сторону сервера, где физически расположена файловая база. Клиентская машина получает от сервера уже готовый результат (структуру данных для отображения).Традиционно для автоматизации удаленных магазинов использовали технологию РИБ (Распределенные Информационные Базы). При этой схеме в каждом магазине устанавливается своя локальная копия базы данных, а между точками и офисом настраивается регулярный обмен файлами переноса данных.
Сравним две эти архитектуры, чтобы сделать правильный выбор.
Преимущества:
Недостатки:
Преимущества:
Недостатки:
Если вы хотите получить преимущества обоих методов — и скорость работы в единой базе, и автономность касс на случай обрыва интернета — отличным решением станет использование специализированного приложения 1С:РМК (Рабочее место кассира) на торговых точках вместо полноценной тяжелой конфигурации "1С:Розница".
Рассмотрим, как работает эта связка:
При организации работы через веб-сервер часто возникает вопрос совместимости торгового оборудования (онлайн-касс, эквайринговых терминалов, сканеров штрихкодов) с разрядностью платформы 1С.
Проанализируем оптимальную схему распределения разрядности платформы:
Apache или IIS). Файловая база под нагрузкой нескольких пользователей может легко исчерпать лимит оперативной памяти в 4 Гб, установленный для 32-битных процессов, что приведет к аварийному завершению работы веб-сервера.БПО (Библиотека подключаемого оборудования) 1С поставляется с драйверами торгового оборудования на базе технологии Native API, которые отлично поддерживают обе разрядности.Тонкий клиент 1С при работе через веб-сервер полноценно поддерживает работу со всем локально подключенным торговым оборудованием. Драйверы ККТ (например, Атол или Штрих-М) и эквайринга устанавливаются непосредственно на локальном компьютере кассы. Тонкий клиент обменивается командами с оборудованием локально, поэтому чеки пробиваются мгновенно, в отличие от работы через удаленный рабочий стол (RDP), где часто возникают задержки при пробросе портов.
Разберем процесс публикации файловой базы 1С на веб-сервере Apache под управлением операционной системы Windows.
Apache (рекомендуется версия 2.4, 64-бит). При установке выберите запуск Apache в качестве службы Windows (Service).RoznicaBase). Это имя будет использоваться в URL-адресе для подключения к базе.Apache 2.4.C:\inetpub\wwwroot\RoznicaBase).Apache через панель управления службами Windows.Теперь база доступна по локальному адресу вида: http://localhost/RoznicaBase. Для удаленных точек вместо localhost необходимо указать внешний IP-адрес сервера или доменное имя (например, http://my-shop-server.ru/RoznicaBase).
Для подключения удаленной точки запустите стартер 1С на кассовом компьютере, нажмите кнопку "Добавить", выберите вариант "Добавление в список существующей информационной базы" и укажите тип подключения "На веб-сервере", вставив полученную ссылку.
При стандартной установке Apache оптимизирован под раздачу обычных веб-страниц, а не под интенсивную работу с базой данных 1С. Чтобы избежать зависаний и вылетов службы при пиковых нагрузках, необходимо скорректировать файл конфигурации веб-сервера httpd.conf (или подключенные к нему конфигурационные файлы модулей).
Рассмотрим подробнее ключевые параметры оптимизации для Windows-систем, где Apache использует многопоточную модель mpm_winnt. Откройте файл conf/extra/httpd-mpm.conf и настройте параметры в следующей секции:
<IfModule mpm_winnt_module>
ThreadsPerChild 150
MaxConnectionsPerChild 3000
</IfModule>
Разберем смысл этих директив:
ThreadsPerChild — определяет количество одновременных потоков, которые может обрабатывать один рабочий процесс веб-сервера. Значение 150 является оптимальным балансом между скоростью отклика и потреблением ресурсов для сети до 10-15 касс.MaxConnectionsPerChild — критически важный параметр для файловой 1С. Значение 3000 заставляет Apache автоматически перезапускать рабочий процесс после обработки указанного количества запросов. Это позволяет эффективно бороться с утечками оперативной памяти, которые неизбежно возникают при длительной работе файлового движка 1С, без прерывания сессий активных пользователей.Также рекомендуется оптимизировать параметры удержания соединений KeepAlive в файле httpd.conf:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 3
Установка KeepAliveTimeout в значение 3 секунды позволяет быстро освобождать неиспользуемые потоки веб-сервера, не позволяя простаивающим сессиям кассовых компьютеров монополизировать ресурсы сервера.
Многие ошибочно полагают, что для публикации файловой базы 1С на 5–10 пользователей требуется дорогой сервер с многопроцессорной архитектурой Xeon и памятью ECC. Проанализируем реальные потребности системы.
Поскольку файловый движок веб-сервера 1С обрабатывает запросы преимущественно в однопоточном режиме (последовательно пропуская транзакции через ядро файловой СУБД), для такого сервера критически важна высокая тактовая частота процессора в однопоточном режиме (Single-Thread Performance), а не общее количество ядер.
Рекомендуемые характеристики "сервера" для сети из 3–5 удаленных точек:
При публикации базы данных в глобальной сети Интернет безопасность становится первоочередной задачей. Оставив базу открытой по протоколу HTTP, вы рискуете скомпрометировать конфиденциальные данные компании или стать жертвой вирусов-вымогателей.
Применим комплекс мер для защиты публикации:
Nginx на "внешнем периметре" сети. Nginx принимает все входящие HTTPS-запросы из интернета, занимается расшифровкой SSL-трафика, фильтрует нежелательные запросы и перенаправляет очищенный трафик на внутренний сервер Apache по локальной сети..htaccess в Apache или конфигурацию Nginx). В этом случае при подключении тонкого клиента сначала потребуется ввести сервисный логин и пароль веб-сервера, и только после успешной проверки пользователь увидит стандартное окно выбора пользователей 1С. Тонкий клиент полностью поддерживает автоматическую передачу параметров авторизации веб-сервера в строке подключения.Соблюдение этих правил позволит вам построить быструю, надежную и безопасную систему удаленной работы с файловой базой 1С:Розница, избежав при этом затрат на развертывание полноценного клиент-серверного варианта или администрирование сложных схем обмена РИБ.