Рассмотрим весьма типичную и в то же время крайне опасную ситуацию. Бизнес сталкивается с необходимостью повысить отказоустойчивость своей ИТ-инфраструктуры (организовать репликацию серверов баз данных и приложений 1С:Предприятие), но при этом стремится максимально сэкономить на лицензиях. Возникает идея: отказаться от коммерческой СУБД MS SQL Server и серверной операционной системы Windows Server, заменив их на бесплатную СУБД PostgreSQL, а в качестве платформы для серверов приложений 1С использовать обычную десктопную Windows 7 x64 (или Windows 10/11 Professional).
В этой статье мы подробно проанализируем, почему подобное архитектурное решение является бомбой замедленного действия для компании с базой данных объемом 90 Гб и 50 активными пользователями, работающими в режиме 24/7. Мы разберем юридические тонкости лицензирования Microsoft, фундаментальные проблемы производительности PostgreSQL под Windows, особенности планировщика задач десктопных систем и ограничения сетевого стека.
---
Начнем с правовой стороны вопроса, так как для любого бизнеса юридическая чистота софта имеет критическое значение при проверках. Существует популярное заблуждение: «Если мы купили и активировали лицензионный ключ Windows 7/10 Professional, мы можем запускать на ней любые службы и это будет абсолютно легально».
Давайте обратимся к тексту Лицензионного соглашения с конечным пользователем (EULA) для настольных операционных систем Windows:
Важное примечание: Системные администраторы часто спорят о том, блокирует ли Windows сетевые пакеты по TCP/IP на уровне стороннего софта (например, СУБД PostgreSQL или сервера 1С, работающих по портам 5432, 1540, 1541 и т.д.). Технически сторонний трафик по портам TCP напрямую не блокируется операционной системой при превышении порога в 20 соединений. Однако, с точки зрения лицензионного аудита Microsoft или правоохранительных органов, развертывание полноценного многопользовательского сервера на десктопной системе является прямым нарушением лицензии. Использование такой схемы приравнивается к использованию нелицензионного («пиратского») ПО со всеми вытекающими финансовыми и уголовными рисками.
---
Перевод базы данных 1С объемом 90 Гб с MS SQL Server на PostgreSQL — это сложная задача сама по себе, особенно если в конфигурации есть самописные модули и неоптимизированные запросы. Но установка PostgreSQL на Windows-платформу усугубляет ситуацию в разы. Выясним, почему PostgreSQL «не любит» Windows.
СУБД PostgreSQL исторически создавалась и оптимизировалась под UNIX-подобные операционные системы (Linux, FreeBSD). Архитектура PostgreSQL фундаментально отличается от архитектуры MS SQL Server:
---
При работе под серьезной нагрузкой (50 пользователей, активно формирующих тяжелые отчеты и проводящих сотни документов в день) администраторы гарантированно столкнутся со специфической ошибкой сетевого стека клиентской версии Windows.
Проанализируем механизм возникновения проблемы. Сервер приложений 1С постоянно открывает новые кратковременные сетевые соединения с СУБД PostgreSQL для выполнения транзакций. Каждое такое соединение требует выделения свободного динамического (временного) TCP-порта.
В клиентских версиях Windows (таких как Windows 7) по умолчанию установлены жесткие ограничения:
TcpTimedWaitDelay) составляет по умолчанию 4 минуты (240 секунд).Под нагрузкой 50 пользователей пул портов исчерпывается за считанные минуты. Новые подключения не могут быть установлены, и пользователи начинают получать ошибки связи с сервером СУБД:
could not send data to server: No buffer space available (0x00002747/10055)
Для исправления этой проблемы в Windows приходится прибегать к ручному редактированию системного реестра, увеличивая параметр MaxUserPort до значения 65534 и снижая TcpTimedWaitDelay до 30 секунд. В операционных системах Linux сетевой стек изначально оптимизирован под высокие серверные нагрузки и динамически управляет пулом портов без вмешательства администратора.
---
Разберем разницу в поведении планировщика задач ядра десктопной и серверной операционных систем Windows.
Десктопная операционная система (Windows 7/10) оптимизирована для обеспечения максимального комфорта интерактивного пользователя. Планировщик приоритезирует задачи переднего плана (foreground) — интерфейс программ, игры, браузер, которые запущены на экране в данный момент. Фоновые службы (к которым относятся сервер приложений 1С ragent, rmngr, rphost и служба СУБД PostgreSQL) получают процессорное время по остаточному принципу.
Даже если зайти в дополнительные параметры системы и переключить распределение ресурсов процессора в режим «Оптимизировать работу фоновых служб», планировщик ядра клиентской Windows все равно не сможет эффективно балансировать нагрузку на многоядерных процессорах под тяжелым сетевым трафиком так, как это делает ядро полноценной Windows Server или Linux. В результате вы получите искусственные задержки (микрофризы) при выполнении параллельных запросов пользователями.
---
Заказчик хочет повысить отказоустойчивость, внедрив репликацию серверов СУБД и приложений 1С. Однако построить надежную систему автоматического переключения при отказе (High Availability) на Windows 7 практически невозможно.
Давайте посмотрим, как организуется современная отказоустойчивость для PostgreSQL. Промышленным стандартом является использование утилиты автоматического переключения (failover) под названием Patroni (в связке с распределенными хранилищами конфигураций Consul или etcd), либо утилиты repmgr. Все эти профессиональные инструменты разработаны исключительно для среды Linux.
На операционной системе Windows автоматический failover для PostgreSQL приходится организовывать с помощью сложных, нестабильных самописных скриптов на PowerShell или командных файлов Windows. Под высокой нагрузкой в такой самописной системе неизбежно возникнет ситуация Split-Brain («раскол мозга»), когда основной и резервный сервера одновременно посчитают себя главными и начнут записывать несинхронизированные транзакции. Восстановить целостность базы данных объемом 90 Гб после инцидента «Split-Brain» без потери данных практически невозможно.
---
Обратимся к реальным тестам производительности файловых и клиент-серверных режимов работы платформы 1С:Предприятие на различных операционных системах. Результаты тестирования (в том числе по методике Гилева) показывают следующую картину:
---
Необходимо донести до руководства компании риски использования Windows 7, связанные с информационной безопасностью:
Если же клиент решит использовать вместо Windows 7 систему Windows 10/11 Professional, возникнет другая проблема — неконтролируемые автоматические обновления. Десктопная система может посреди рабочего дня принудительно уйти в перезагрузку для установки накопительного пакета обновлений, прервав транзакции 50 пользователей и приведя к физическому повреждению таблиц базы данных.
---
Если у клиента действительно критически важная инфраструктура, где простой в один час несет огромные финансовые потери, экономия на базовом программном обеспечении недопустима. Однако, если бюджет жестко ограничен, существует единственно верное, стабильное и абсолютно бесплатное (с точки зрения лицензий на ОС и СУБД) решение.
Проанализируем правильную схему построения отказоустойчивого кластера:
rphost и уголовной ответственности.Перевод серверов на Linux потребует привлечения квалифицированного системного администратора. Но стоимость услуг грамотного инженера, который один раз настроит систему «под ключ», в десятки раз меньше, чем репутационные потери бизнеса от перманентных сбоев «сервера» на базе Windows 7.