В связи с обострением вопросов импортозамещения многие задумываются о переходе на системы, позволяющие заменить зарубежные аналоги, или уже его начали. Мы решили поделиться с вами 7-летним опытом установки и эксплуатации системы Linux + PostgreSQL + «1C» на 300 онлайн-пользователей.

Авторы статьи:

Стрижевский Александр – начальник ИТ-отдела АО «123 авиаремонтный завод»* («123 АРЗ»)

Малышев Дмитрий – разработчик в ВЦ «Раздолье», «1С»-эксперт по технологическим вопросам

 *АО «123 АРЗ» - одно из ведущих предприятий по ремонту и техническому обслуживанию транспортных самолётов военной и гражданской авиации России. Широкий спектр услуг с применением передовых технологий, тесное сотрудничество с разработчиками авиационной техники, адекватность потребительскому спросу и высокое качество ремонта – главные приоритеты предоставляемых услуг. Нам доверяют ремонт авиационной техники не только российские, но и зарубежные авиакомпании, расположенные на трёх континентах.

Начнём с опыта установки и эксплуатации системы Linux.

Сегодня использование альтернатив Microsoft не имеет каких-то нерешаемых проблем или серьёзных рисков. Комбинация Linux + PostgreSQL является хорошей платформой для информационной системы на базе программных продуктов «1С», но так было не всегда.

Эволюция программного и аппаратного обеспечения

К 2015 году предприятие работало с базами на платформе «1С» 7.7 по складскому учёту. Базы работали на MS SQL 6.5. Покупали тогда бандлом «1С» + SQL под конфигурацию «ЗиК». Затем приобрели программу «1С:Бухгалтерия 8». Поскольку её использовали онлайн всего 10 пользователей, ставить под такую задачу сервер MS SQL было неоправданно дорого. Это послужило тестированием работы «1С:Бухгалтерии 8» на Linux + PostgreSQL. Тесты прошли успешно – всё работало хорошо.

В 2016 году предприятие запустило проект внедрения «1С:ERP», и в этот момент ребром встал вопрос выбора – на каком системном программном обеспечении запускать такую большую и нагруженную систему. Уже тогда наш завод посчитал, что стоимость лицензий SQL и пользовательских лицензий на доступ от Microsoft слишком высока. Учитывая успешный опыт использования PostgreSQL и Linux для работы «1С:Бухгалтерии 8», решили использовать это бесплатное ПО и для запуска «1С:ERP». Как показывает опыт и текущая ситуация, решение было верным, т.к. в настоящий момент благодаря ему нас не заботит решение вопросов импортозамещения в авральном режиме.

С самого начала проекта внедрения «1С:ERP» сразу запускался в комбинации: сервер «1C» + Linux + PostgreSQL. Вначале в системе работало до 40 пользователей и всё было хорошо – время отклика соответствовало ожиданиям. Но когда количество активных пользователей превысило 50, система начала тормозить. Беглый анализ показал, что причиной проблемы стало использование старого «железа» и виртуализации. Тогда было принято решение приобретать новые сервера, которые выбрали по рекомендации интегратора [ВЦ «Раздолье»].

Были приобретены 2 сервера HP со следующими характеристиками: 256 Гб оперативной памяти, диски 2х800 Гб NVME SSD, процессоры 2х12 ядер по 2 потока (48 потоков). Один «железный» сервер выделен под сервер «1С», другой – под PostgreSQL. Серверы соединены каналом в 10 Gb.

На новых серверах решили задействовать не виртуальные машины, а автономные контейнеры в локальной среде (docker'ы). В настоящий момент планируем в дальнейшем использовать системы Kubernetes [открытое программное обеспечение для «оркестровки» контейнеризированных приложений — автоматизации их развёртывания, масштабирования и координации в условиях кластера]. На системе докеров остановились в связи с тем, что она требует меньше дополнительных расходов аппаратных ресурсов и работает быстрее виртуализации. Докеры взаимодействуют друг с другом через индивидуальные ip-адреса и диапазоны портов.

На серверах использовали Centos 7, Postgres Pro, сервера «1С» х64.

Сервер под «1С»

«Железный» сервер разделен на 10 doker'ов:

1 докер используется для работы исторических баз: «1С:Бухгалтерия 8», «1С:Общепит», «Метрология».

3 doker'a используются для работы кластера из 3 серверов «1С» с резервированием для рабочей базы «1С:ERP» [сейчас онлайн – 250 пользователей].

1 докер используется для работы тестовой базы «1С:ERP».

2 doker'a используются для работы кластера из 2 серверов «1С» для рабочей базы «1С:Зарплата и управление персоналом 8» [35 пользователей онлайн].

1 докер используется для работы тестовой базы «1С:Зарплата и управление персоналом 8».

1 докер используется для работы базы «Казначейства» на «1С».

1 докер используется как СЛК-сервер для системы «1С:Общепит».

В докерах «1С» обычно используем самые последние платформы с сайта технической поддержки «1С».

Сервер под PostgreSQL

Этот сервер также разбит на docker'ы. Под каждый кластер «1С» выделяем отдельный докер на втором сервере.

На сервере стоит версия PostgreSQL с cайта команды Postgres Professional, где есть сборки специалистов для «1С» (не с сайта «1С»). Здесь есть возможность скачать более свежие сборки и релизы «Постгрес».

Установка

На старых «железных» серверах продолжили использовать виртуальные машины Linux, на новых – сразу решили использовать doker'ы.

По статистике на разворачивание сервера Linux уходит примерно 1,5 часа.

Разворачивание подсистемы докеров из репозитария на серверах занимает пару минут (см. инструкцию). Сборка образа с использованием docker-файлов занимает 5-10 минут. Мы используем только 2 docker-файла: один – для серверов «1С», второй – для Postgres.

Построенный образ на остальные docker'ы просто копируется. Настроенные docker-файлы с описанием последовательности шагов установки [ставится образ «Линукса», пакеты ПО, пути к дистрибутивам «1С» и Postgres] можно посмотреть в «Приложении».

Если в дальнейшем потребуется разворачивать большое количество докеров, то можно будет использовать Ansible — систему управления конфигурациями, написанную на Python, с использованием декларативного языка разметки для описания конфигураций. Это позволит автоматизировать настройки и развертывание программного обеспечения.

Администрирование

Сопровождают 20 образов докер в нашем случае 2 администратора. Работаем с Docker в консоли. Также использовали GUI-/веб-интерфейс. Для помощи администратору в случае необходимости существуют и красивые «мышкадавы», которые сами работают в докере и помогают управлять другими докерами. Но, в основном, они полезны в случаях, если существует «зоопарк» из десятков или сотен разнонаполненных докеров.

В статье на «Хабре» представлен обзор наиболее заметных на сегодняшний день графических интерфейсов для обслуживания Docker:

  • Portainer

  • Kitematic (Docker Toolbox)

  • Shipyard

  • и т.д.

Так как у нас используется всего 2 шаблона докера [один – под «1С», другой – под PostgreSQL] – их администрирование из стандартной консоли из поставки не представляет сложности.

Docker'ы сервера «1С»

 Docker'ы сервера PostgreSQL 

PGAdmin, кстати, тоже запущен в контейнере docker.

Плюс используются утилиты мониторинга linux.

Время работы системы 1857 дней.

 

Регламентное обслуживание

Обслуживание для докеров с «1С» в основном сводится к перезапуску службы сервера «1С», что занимает 5 секунд. Также используем обрезание журналов регистрации «1С» [Раньше для экономии лицензий использовали отключение спящих сеансов, пока в конфигурации не задействовали настройку отключения спящих сеансов и не сменили её значение с 48 на 10 часов].

Для докеров с PostgreSQL используем обновление статистик, обновление индексов и резервное копирование. Резервное копирование идёт на отдельный «железный» сервер № 3, предназначенный для хранение резервных копий данных.

Ещё выполняется обслуживание Cron'ами (скриптами). Cron-программы [в системах класса UNIX], используются для периодического выполнения заданий в определённое время. Регулярные действия описываются инструкциями, помещёнными в файлы crontab и в специальные каталоги. Выполняются по расписанию.

Лицензирование

В нашем случае стоят аппаратные лицензии «1С». Это исторически сложившаяся традиция со времени использования виртуальных машин.

Программные лицензии также могут успешно использоваться в докерах вместо аппаратных.

Сервер лицензирования и СЛК-сервер можно установить в отдельных докерах. И они будут видны в остальных докерах по отдельным IP [используется macvlan сетевой драйвер docker для назначения MAC адрес к виртуальному сетевому интерфейсу каждого контейнера, что делает его похожим на физический сетевой интерфейс, напрямую подключенный к физической сети].

Опыт решения проблем

Платформа «1С:Предприятие 8» и конфиугурации «1С:ERP» и «1С:ЗУП» в ходе эксплуатации потребовали оптимизации.

Расскажем о нескольких случаях из практики.

Пример 1: Оптимизация закрытия месяца

Сложилась ситуация: закрытие периода в «1С:ERP» в базе на MS SQL проходило за 1 час, при этом в базе на PostgreSQL — за 6 часов.

Проблема оказалась комплексной:

  • алгоритмы закрытия месяца кешировали избыточное количество данных, что вело к сильным замедлениям;

  • настройки PostgreSQL были неоптимальны;

  • была ошибка в самой платформе «1С».

К решению приступали параллельно с поддержкой фирмы «1С».

По итогу от «1С» получили рекомендацию по изменению настроек PostgreSQL:

«Поскольку в ускоренном расчёте себестоимости самый долгий этап – СкорректироватьСтоимостьСписанияНезавершенногоПроизводства, потому анализ начали с него. Большая часть времени этап выполняется на СУБД.

Анализ планов запросов показал следующие проблемы:

- Долгое выполнение ANALYZE для временных таблиц. Длительность ANALYZE не коррелирует с размером таблиц. maintenance_work_mem 2GB. Увеличение длительности происходит из-за default_statistics_target = 1000, согласно документации "Чем больше установленное значение, тем больше времени требуется для выполнения ANALYZE, но тем выше может быть качество оценок планировщика. Значение этого параметра по умолчанию — 100". Рекомендуем вернуть значение по умолчанию (100).

- Нехватка work_mem. Чаще всего проявляется в случаях, когда необходимо выполнить сортировку или агрегацию для большого числа строк. Из-за нехватки work_mem postgres обращается к диску и выполняет действия на нём, что существенно сказывается на времени выполнения запросов. Текущее значение work_mem 256MB, рекомендуем его увеличить до 512MB или 1GB при наличии возможностей».


Своими силами для поиска проблем производительности мы настроили сбор данных технологического журнала «1С» + логирование в PostgreSQL. Далее – выполнили определение проблемных запросов и корректировку кода в программе «1С:ERP». В качестве навигатора действий поиска и отладки использовали статьи и инструменты с «Инфостарта», GitHub и «Тензор»:

Найденные решения заключались в следующем:

  • При закрытии «1С» либо кешировало избыточное количество данных во временные таблицы, либо для них не было подходящих индексов. Исправление заключалось в преобразовании типовых временных таблиц в свои с меньшим объемом данных и создании подходящих индексов;

  • Также была зарегистрирована ошибка в платформе «1С», связанная с отсутствием подходящего индекса для внутриплатформенного метода апдейта данных.

Ошибка 60001790 исправлена и уже опубликован релиз платформы, содержащий исправление.

В итоге мы достигли ускорения закрытия периода в «1С:ERP» с 6 до 1,5 часов.

  Пример 2: Ошибка с платформой и обновлением конфы

В 8.3.19 столкнулись с падением фоновых заданий, в 8.3.20 – отладка не работала с фоновыми процессами, в 8.3.21 – падает сама «1С» при работе на старых машинах с ОС Windows XP (ошибка 60003943).

Несколько раз при обновлении падала конфигурация «1С». Не могла завершиться транзакция. Откатили её в таблице config [некоторые решения на форумах для MS SQL также подходят для PostgreSQL].

Пример 3: Медленная работа «1С:ЗУП» при использовании RLS

Реализации RLS [ограничение прав доступа в «1С» на уровне записей] под PostgreSQL была недостаточно производительной. Устранили эту проблему так же по рекомендациям фирмы «1С». Суть: выгрузка ролей в файлы и глобальной заменой запросов ограничений, затем загрузка файлов обратно. Делали так при каждом обновлении «1С:ЗУП», начиная с платформы 8.3.16.

В настоящий момент система RLS в платформе и конфигурации «1С:ЗУП» работает под PostgersSQL с нормальной производительностью. В текущих версиях платформы «1С:Предприятие 8» [начиная с 8.3.20] механизм RLS уже оптимизирован и замены в «1С:ЗУП» не требуется. Изменилась трансляция запросов, они стали быстрее обрабатываться в Postgres'е.

Feedback от эксплуатации и пожелания

В настоящее время использование свободного ПО для работы «1С:ERP» – штатная ситуация. Платформа и программные продукты «1С» развиваются в сторону адаптации и стабильной работы со связкой Linux и PostgreSQL. Сейчас можно смело рекомендовать использовать это свободное программное обеспечение для работы «1С». Тем не менее есть некоторые направления, по которым от «1С» хотелось бы улучшения контента.

Приложения

Приложение 1: Оптимизация закрытия месяца

Ставим последнюю версию платформы «1С»

PG main.conf:

# Memory Settings

shared_buffers = 32GB

work_mem = 512MB

maintenance_work_mem = 2GB

effective_cache_size = 96GB

PG stat.conf:

default_statistics_target = 100

PG log.conf:
auto_explain.log_min_duration = '20s'

 

В конфигурации мониторинга загружаем ТЖ:

Находим по временной метке запрос в логе PostgreSQL и через обработку КонверторЗапросовSQL_в_«1С» получаем красивый план:

см. Explain PostgreSQL (tensor.ru)

Далее по строке ТЖ получаем:

 

В модуле Общий модуль РасчетСебестоимостиРешениеСЛУ:

Функция ТекстДляРешенияСЛУ_ДополнительныеРасходы(ПараметрыРасчета = Неопределено)

...

ТекстыЗапросов.Добавить(РасчетСебестоимостиКорректировкаСтоимости.ТекстСуммыПрочихРасходов());

... 

Далее ТекстСуммыПрочихРасходов() ищем похожее на:

  И находим:

...

|ПОМЕСТИТЬ СуммыРасходов

|ИЗ

| (ВЫБРАТЬ

...

|

| ОБЪЕДИНИТЬ ВСЕ

|

| ВЫБРАТЬ

...

| ИЗ

| ВТКэшРасчетныеОборотыПрочиеРасходы КАК ДД

|

| ЛЕВОЕ СОЕДИНЕНИЕ РассчитанныеДокументы КАК РассчитанныеДокументы

| ПО РассчитанныеДокументы.Период = ДД.Период

| И РассчитанныеДокументы.Регистратор = ДД.Регистратор

...

| ЛЕВОЕ СОЕДИНЕНИЕ ВТКэшРасчетныеОборотыСебестоимостьТоваров КАК ДвиженияСебестоимости

| ПО ДвиженияСебестоимости.Период = ДД.Период

| И ДвиженияСебестоимости.Регистратор = ДД.Регистратор

| И ДвиженияСебестоимости.ИдентификаторФинЗаписи = ДД.ИдентификаторФинЗаписи

...

В протоколе закрытия месяца:

35. Партионный учет: ПодготовкаДанныхДляРешенияСЛУ_ДополнительныеРасходы

Начало этапа: 08.09.2022 11:16:17, длительность: 3 мин. 30,391 сек. (11,32%)

Время от начала расчета до начала этапа: 10 мин. 55 сек.

Сформированы временные таблицы (размер / время (% времени этапа) / уточнение / исходные таблицы):

...

- СуммыРасходов:

- 2 409 / 3 мин. 30,148 сек. (99,88%)

...

57. Партионный учет: ПодготовкаДанныхДляРешенияСЛУПостатейныеРасходы

Начало этапа: 08.09.2022 11:23:19, длительность: 3 мин. 43,8 сек. (12,04%)

Время от начала расчета до начала этапа: 17 мин. 57 сек.

Сформированы временные таблицы (размер / время (% времени этапа) / уточнение / исходные таблицы):

- СуммыРасходов:

- 2 409 / 3 мин. 36,445 сек. (96,71%)

Вот ОНО!

Продолжение – в следующей серии...

По плану – ссылка.

  Есть рекомендация:

Создаём временную таблицу с индексацией по полям, по которым соединяются таблицы:

|ВЫБРАТЬ

| ДД.Период КАК Период,

| ДД.Регистратор КАК Регистратор,

| ДД.ИдентификаторФинЗаписи КАК ИдентификаторФинЗаписи,

| ДД.НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации,

| ДД.ХозяйственнаяОперация КАК ХозяйственнаяОперация,

| ДД.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,

| ДД.РазделУчета КАК РазделУчета,

| ДД.ВидЗапасов КАК ВидЗапасов,

| ДД.Организация КАК Организация,

| ДД.Партия КАК Партия,

| ДД.АналитикаУчетаПартий КАК АналитикаУчетаПартий,

| ДД.АналитикаФинансовогоУчета КАК АналитикаФинансовогоУчета,

| ДД.ВидДеятельностиНДС КАК ВидДеятельностиНДС

|

|ПОМЕСТИТЬ ВТРасчетныеОборотыСебестоимостьТоваров3557

|

| ИЗ

| ВТКэшРасчетныеОборотыСебестоимостьТоваров КАК ДД

|

|ИНДЕКСИРОВАТЬ ПО

| Период,

| Регистратор,

| ИдентификаторФинЗаписи,

| НастройкаХозяйственнойОперации,

| ХозяйственнаяОперация

 

Результат – ссылка.

 

Итого: 209 721.150 / 8.420 = 24907,5, ускорение примерно в 25000 раз. 

Приложение 2. Примеры файлов для запуска docker'а

Dockerfile.21

# vim:set ft=dockerfile:

FROM sav/basicsystem1c-7:build

MAINTAINER sav

ARG SERVER_1C_VERSION

COPY ./distr/setup-full-${SERVER_1C_VERSION}-x86_64.run /tmp/

RUN ./tmp/setup-full-${SERVER_1C_VERSION}-x86_64.run --unattendedmodeui minimalWithDialogs --mode unattended --enable-components server,config_storage_server,ru \

&& rm -rf /tmp/*

VOLUME /home/usr1cv8

VOLUME /tmp/.aksusb

# && echo "SystemLanguage=RU" > /opt/1cv8/conf/conf.cfg \

# && chown -R usr1cv8:grp1cv8 /opt/1cv8 \

#RUN mkdir -p /home/usr1cv8/.1cv8/1C/1cv8/conf/

#COPY logcfg.xml /home/usr1cv8/.1cv8/1C/1cv8/conf/

#RUN chown -R usr1cv8:grp1cv8 /home/usr1cv8

COPY docker-entrypoint.sh.18 /docker-entrypoint.sh

ENTRYPOINT ["/docker-entrypoint.sh"]

EXPOSE 1540-1541 1560-1591

CMD ["ragent"]

Docker-compose.yml

version: '2.2'

networks:

macvlan1:

external:

name: macvlan1

netcont0:

external:

name: netcont0

services:

1C:

build:

context: ../Docker/srv-1C

dockerfile: Dockerfile

args:

- SERVER_1C_VERSION=${VERSION_1C}

image: sav/srv-1c:${VERSION_1C}

container_name: srv-1C-${ContainerName}

hostname: srv-1C-${ContainerName}

networks:

macvlan1:

ipv4_address: $srv1C_IP1

netcont0:

ipv4_address: $srv1C_IP2

dns_opt:

- ndots:1

volumes:

- /etc/localtime:/etc/localtime:ro

- /tmp/.aksusb:/tmp/.aksusb

- /opt/1C/home/${ContainerName}:/home/usr1cv8

- /opt/1C/ХранилищеФайлов/N1:/home/usr1cv8/ХранилищеФайлов

# - /etc/hasplm/nethasp.ini:/etc/nethasp.ini:ro

mem_limit: $MEM_LIMIT

# lscpu | grep node1

cpuset: $CPU_SET

tmpfs: /tmp:rw,exec,strictatime

extra_hosts:

- srv-db1C-${ContainerName}:$srvDB_IP1

restart: always

environment:

- SERVER_1C_VERSION=${VERSION_1C}

- DEBUG=-debug

- TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES=${TCMALLOC_THREAD_CACHE}

Комментарии (12)


  1. Sergey-S-Kovalev
    20.12.2022 15:01
    +1

    Время работы системы 1857 дней.

    Ммм. Ни устранения уязвимостей, ни обновления прошивок, ни обновления пакетов, потому что судя по статье она заработало и дышать на нее уже все боятся. Докерами то нагрузку с хоста не хост без прерывания не погоняешь, что бы хосты обслужить :) Архитектура отказоустойчивости на уровне хостов как в RAID0.

    Приложение 2.

    Вот бы кто то пользовался блоками кода и ссылки правильно оформлял

    Мониторинг срань. Про бэкапы не слова, хотя бы про базы. Написание терминов меняется по статье, видимо писал не один человек. Оформление на троечку с минусом.

    Но за статью спасибо, познавательно в плане маломальски больших нагрузок, хотя отказ от виртуализации явно огромный минус в плане скорости обслуживания/восстановления.


    1. nikweter
      20.12.2022 17:26

      Зато большой плюс в плане производительности.


      1. Sergey-S-Kovalev
        21.12.2022 10:48

        Большой плюс - это сколько? Быстрее на 5%-10%-30%-100%-200%?

        Все 100% настоящих проблем, которые я видел с 1С невозможно было закидать железом, потому что проблемы были с кодом 1С, и собственно его правкой проблемы с производительностью и устраняли.

        Я постоянно вижу, что специалисты 1С и внедренцы 1С закатывают глаза и требуют 100500 ядер и памяти, и они даже уже узнали что такое NVMe и его тоже теперь требуют, но в итоге все это спокойно взлетает внутри виртуализации, прекрасно обслуживается и автоматизируется.

        Вот бы увидеть сравнение на большой базе и импакт от виртуализации в условных vmware/hyper-v/kvm хоть разок, а то все говорят, но никто показать не может.


        1. CrushBy
          21.12.2022 15:14

          Я постоянно вижу, что специалисты 1С и внедренцы 1С закатывают глаза и требуют 100500 ядер и памяти

          Мне вот тоже всегда интересно, чем им помогут ядра и память, когда из-за ошибки статистики PostgreSQL попадает в Nested Loop Left Join с Seq Scan (да пусть даже и индекс скан). Как в скрине ниже. И там дальше сложность 4210*55582. Будет там записей в 10 раз больше, и даже на суперкомпьютере не выполнится этот запрос никогда.


  1. CrushBy
    20.12.2022 15:59

    В ваших планах, я вижу как минимум одну странность :

    Планируемое количество записей - 1, а реальное - 4210. Естественно, при таких раскладах начинают выбираться не те алгоритмы для дальнейшей обработки (типа Nested Loop Left Join).

    Тут или 1С не делает ANALYZE временных таблиц после записи в них, или просто так получается из-за статистики по колонкам. Но в целом сам запрос, который сформировал 1С - очень странный. При таких запросах на нормальных объемах данных там все будет очень сильно тормозить именно из-за нерелевантной статистики. Возможно такие запросы и прокатывают в MSSQL (возможно там перепланирование есть - я не сильно в MSSQL разбираюсь), но вот в PostgreSQL так делать не стоит.


    1. nikweter
      20.12.2022 17:30

      Не спец в бд, но 1с очень любит такие запросы. Только 1 и 4210 это ещё по божески, чаще вижу 100 и 1500000 например. Это я про ерп и постгрес.


  1. mixsture
    20.12.2022 18:33
    +1

    Мне нравится оптимизм автора.
    1) У нас начались проблемы при приближении к 50 пользователям и мы купили серверов на полтеррайбайта ОЗУ, чуть ли не топовыми дисками и процессоров там стока, что хватит на каждого пользователя из этих 50 по 1 ядру в любую секунду. Черт побери, вот это запас так запас!
    2) Но и этого нам не хватило, поэтому часть конфигураций мы каждое обновление на протяжении нескольких лет меняли под себя (а там обновления чуть ли не каждые 2 недели выпускают. ну всего то 24 исправления в год, фигня какая). Некоторые проблемы аж совместно с вендором пришлось решать, потому что ошибка платформы (даже страшно представить, сколько времени на это ушло). Для некоторых проблем нам пришлось обзавестись хорошим DBA и переписать часть ерп под себя.
    — Все это дополнительные проблемы при переходе на pgsql.
    Вывод: PGSQL не несет существенных рисков, можно работать. Ничего себе. Может я ошибаюсь, но mssql на 50 пользователей обошелся бы в районе 400к. А проблем выше описано ничуть не на меньшую сумму, причем многие из них не решаются однократным вложением.


  1. shurutov
    20.12.2022 20:13

    Сервер под Postgres SQL

    Этот сервер также разбит на docker'ы.

    Дальше читать нет необходимости. Но я себя пересилил. Дошёл до:

    Время работы системы 1857 дней.

    Понимание необходимости обновления (первый комментарий, однако) отсутствует, как класс. Помимо уже сказанного явно отсутствует какая-нибудь отказоустойчивость, т.е. накрылась железка, производство встало. Всё, дальше уже просто неинтересно.


  1. osipov_dv
    20.12.2022 20:42

    Вот зря вы БД в докеры запихнули... И тема с разделами и дисками именно под БД не раскрыта, а это 90% производительности.

    Как по мне, постгрю стоило разместить без докеров, нативно. И если уж так хочется - поднять несколько кластеров. Но обязательно разнести WAL и БД по дискам, тем более с системой.


  1. starik-2005
    21.12.2022 11:33

    В прошлый раз читал статью с компа, офопмлено было плохо, код нечитабелен. А сейчас вот открыл с телефона - все стало крксиво, ну кроме кода. При этом, как я понял, автор со статьей ничего не делал. Так что кому не нравится - читайте эту статью с телефона))))

    ЗЫ: проголосовать не могу - был замечен в политических диспутах)))


  1. malykhin
    21.12.2022 11:56

    "Кластер" из трех контейнеров с сервером 1С на одном физическом хосте - это сильно!
    Я бы еще предложил таким же образом "кластер" Postgres на соседнем хосте поднять - чтобы интереснее было )

    А если по делу - то вопрос: как сервер 1С в контейнерах относится к одному единственному аппаратному ключу?
    Ну и, я так полагаю, с одной единственной программной лицензией тут ловить, скорей всего, будет нечего, т.к. непонятно, как её "скормить" всем контейнерам, и чтобы они не начали "возмущаться" на тему несовпадения конфигурации системы.


    1. osipov_dv
      21.12.2022 14:23

      я давно уже ушел из темы 1с, но уже лет 10 назад они активно отказывались продавать физические. Переводили всех на программные лицензии (которые дико глючили). Единственный способ получить, это иметь легаси лицензии (типа 8.1)

      Физической было пофиг сколько кластеров на сервере, видимо это и напрягало производителя.