Организация работы удаленных офисов с центральной базой 1С — классическая задача системного администрирования. Часто для этих целей используют терминальный доступ (RDP), однако он требует серьезных затрат на лицензирование и администрирование операционной системы сервера. Тонкий клиент 1С является отличной альтернативой, но при его работе через нестабильные каналы связи (например, VPN с потерей пакетов) пользователи часто сталкиваются с зависаниями интерфейса, «отваливанием» сессий и медленной работой.
В этой статье мы подробно разберем, как оптимизировать работу тонкого клиента 1С, минимизировать влияние сетевых сбоев и настроить инфраструктуру для комфортной работы пользователей даже на проблемных каналах связи.
Для начала проанализируем разницу между типами подключений. При прямом подключении тонкого клиента к кластеру серверов 1С (по протоколу TCP, порт 1541 и др.) платформа крайне чувствительна к качеству связи. Любая потеря пакетов или микросекундный обрыв сетевого соединения приводит к тому, что клиентский сеанс зависает в ожидании ответа от сервера приложений. По умолчанию таймаут ожидания может быть очень большим, из-за чего интерфейс программы «намертво» блокируется, а затем аварийно закрывается с ошибкой связи.
В то же время, при использовании RDP пользователь видит стабильную картинку, потому что терминальный протокол оптимизирован под постоянную передачу изменений экрана и умеет быстро восстанавливать сессию при кратковременных сбоях. Но разворачивать тяжелую инфраструктуру RDP только ради компенсации плохой сети — не самое эффективное решение.
Рассмотрим по шагам комплекс мер, которые позволят добиться стабильности от тонкого клиента 1С без использования терминального сервера.
Это самый важный и эффективный шаг. Публикация информационной базы 1С на веб-сервере (под управлением IIS или Apache) кардинально меняет логику сетевого взаимодействия между тонким клиентом и сервером приложений.
Для реализации этого решения необходимо установить на сервере приложений IIS или Apache, выполнить публикацию информационной базы и изменить строку подключения у клиентов с сетевого адреса сервера 1С на URL-адрес веб-сервера.
Очень часто виновником «потери пакетов» (когда утилита ping показывает потерю 20-25% пакетов при передаче больших объемов данных) является некорректно настроенный размер MTU (Maximum Transmission Unit) на сетевом оборудовании или в конфигурации VPN-туннеля.
Стандартный кадр Ethernet имеет размер 1500 байт. Однако при прохождении через VPN-туннель (IPsec, OpenVPN, WireGuard, L2TP) к каждому пакету добавляются служебные заголовки шифрования. В результате реальный размер пакета превышает 1500 байт. Если на промежуточных маршрутизаторах провайдера запрещена фрагментация пакетов, такие «перегруженные» пакеты просто отбрасываются, что платформа 1С воспринимает как обрыв связи.
Выясним оптимальный размер пакета экспериментальным путем. Запустим из командной строки удаленного ПК команду пинга сервера с запретом фрагментации:
ping IP_адрес_сервера -f -l 1450
Если система выдает ошибку «Требуется фрагментация пакета», постепенно уменьшайте число (например, до 1400, 1380, 1360), пока пакеты не начнут проходить без потерь. Полученное значение и будет являться безопасным размером MTU для вашего канала.
Для устранения проблемы необходимо:
Чтобы тонкий клиент не тратил время и ресурсы канала на постоянное открытие новых TCP-сессий при каждом обращении к серверу (что на плохом канале вызывает колоссальные задержки), настроим механизм постоянного соединения (Keep-Alive) на веб-сервере.
В конфигурационном файле веб-сервера Apache (httpd.conf) необходимо задать следующие параметры:
KeepAlive On
MaxKeepAliveRequests 500
KeepAliveTimeout 60
Это позволит удерживать сетевой канал «прогретым» и открытым для клиента в течение 60 секунд после последнего действия, исключая задержки на повторное согласование сетевого стыка.
Также обязательно активируйте сжатие данных на стороне веб-сервера. Например, для Apache подключите модуль mod_deflate, чтобы текстовые данные (XML и JSON, которыми обменивается 1С) сжимались «на лету» перед отправкой в канал связи. Это снизит объем трафика в разы.
Для запуска тонкого клиента на медленных и нестабильных каналах предусмотрены специальные параметры командной строки:
ClientConnectionSpeed=Low (Низкая скорость соединения). Его использование предписывает платформе минимизировать количество обращений к серверу. Платформа начинает реже запрашивать декоративные элементы интерфейса, отключает тяжелые картинки разделов и оптимизирует кэширование данных на клиенте. Этот параметр можно указать прямо в свойствах подключения информационной базы в списке запуска 1С./TComp. По умолчанию платформа использует собственный алгоритм усиленного сжатия (режим -SDC). Однако на крайне нестабильных каналах с высокой потерей пакетов повреждение сильно сжатых архивов может приводить к ошибкам разбора данных (например, «Некорректный формат данных усиленного сжатия»). В таких редких случаях имеет смысл протестировать запуск со стандартным сжатием или временно отключить его для проверки стабильности:
"C:\Program Files\1cv8\common\1cestart.exe" enterprise /F"ПутьКБазе" /TComp -Deflate
Распространенная архитектурная особенность платформы 1С состоит в том, что даже если в строке подключения к кластеру серверов указан IP-адрес, в процессе работы менеджер кластера перенаправляет тонкого клиента на рабочий процесс конкретного сервера, используя его сетевое имя (hostname).
Если в удаленном офисе DNS-сервер работает нестабильно или не может разрешить локальное имя сервера из центрального офиса через VPN, тонкий клиент будет зависать на несколько минут при попытке каждого обращения. Выясним причину, проверив доступность сервера по имени с удаленного компьютера при помощи команды ping Имя_Сервера_1С.
Для решения этой проблемы без развертывания сложных служб DNS достаточно жестко прописать соответствие IP-адреса и имени сервера 1С в файле hosts на каждом клиентском компьютере удаленного офиса. Файл расположен по пути C:\Windows\System32\drivers\etc\hosts. Откройте его от имени администратора и добавьте строку вида:
192.168.1.100 ИмяСервера1С
Где 192.168.1.100 — локальный IP-адрес вашего сервера 1С в VPN-сети, а ИмяСервера1С — его точное сетевое имя (hostname), зарегистрированное в операционной системе сервера.
Мы проанализировали основные причины нестабильной работы тонкого клиента 1С и подготовили пошаговый план оптимизации. Переход на публикацию базы через веб-сервер IIS или Apache, устранение фрагментации пакетов путем настройки MTU на роутерах, оптимизация параметров Keep-Alive и локальное прописание имен серверов в файле hosts позволяют добиться высокой отзывчивости и непрерывности работы пользователей 1С без использования дорогостоящих и требовательных к обслуживанию терминальных серверов (RDP).