Всем доброго времени суток!
Решил воспользоваться коллективным разумом Инфостарт :)
Ситуация такая.
Есть рабочий сервер Ubuntu 16.04
Железка достаточно старая, и на ней стоит максимальные 8ГБ памяти, но со своими задачами неплохо справляется.
Проблема только в том что 1С х64, забирает под себя в течении нескольких дней до 11Гб ОЗУ, и начинает сильно свопится, что резко влияет на быстродействие.
Честно понятия не имею зачем ей столько ОЗУ, т.к. в другом сервере стоит х32 версия, которая вполне себе комфортно живет с таким же набором ИБ, и даже большим объемом данных.
Попробовал поставить сервер 1С x32 в выходные, и даже погонял тестовую нагрузку по VPN в режиме клиент-сервер, все понравилось.
Но типовые подключения работают через Web-клиент и Тонкий клиент поверх HTTPS.
А вот Apache 2.4 х64 не хочет запускаться с Сервером 1С х32.
Попытка поставить Apache x32, привела к выводу что на Ubuntu 16.04 х64 это настолько сложно, и к концу данной операции Убунта станет уже фактически 32 . Это все долго и муторно из-за зависимостей и т.д.
Можно конечно поставить Ubuntu х32, но это сразу срежет 4Гб памяти, и смысл такой операции нулевой.
Может кто-то сумел подружить сервер х32 с Apache х64, я не гуру в этом.
Пока в голове только одно решение, ставить отдельную слабенькую машинку чисто под Апач, и ставить туда x32 Ubuntu, а конектится к основному серверу, где будет стоять х64 система и х32 сервер 1С. Но плодить точки отказа не очень охота.
Неплохой вариант, гораздо лучше чем VM которой надо будет отдать память и ресурсы.
Почитал маленько, я так понял память он забирает из текущих ресурсов как обычное приложение, понятно что потребуется больше чем нативному Апачу, т.к. ещё потребуется на обслуживание контейнера и окружение.
Ещё понял что у меня будет проблема с https. один раз прописать сертификаты вроде расписано как, но у меня LetsEncrypt.
Предположим для получения сертификатов и обслуживания сайта, оставлю Apache x64, а для 1С через Docker с 32х битным Апачем.
Как быть когда certbot обновит сертификаты, как я понял приложениям внутри контейнера, нельзя указать пути за его пределы.
Вообщем надо все сильно изучить, тут проблема 2. С английским не очень, на русском документации мало.
Ещё не представляю как при входящем соединении на нативный Апач, перекинуть обработку данного соединения на Апач внутри контейнера, чую так можно, но как именно не пойму.
(13) Честно не работал с ВМ вообще, но как я понимаю для ВМ надо задать параметры, и отдать совершенно определенные ресурсы например 512 Мб памяти, и с этими параметрами она живет.
Что если 512 Мб, ей окажется мало?
Как я понял докер сам возьмет у системы нужное количество памяти и продолжит работу, при этом изначально если ему необходимо 100Мб, он возьмет 100. А в случае с ВМ сразу лишусь 512.
Докер - приложение в системе которое разворачивает некую изолированную среду. И он же транслирует текущую память и ядро текущей ОС в эту среду.
ВМ - все же работает из под гипервизора который жестко определяет количество ресурсов для определенной ВМ.
Правильно я понимаю?
Опять же для ВМ нужны разделы на диске свои и т.п.?
(14)Да, приблизительно так. Виртуальные машины наиболее приближены к отдельным компьютерам.
Память в hyper-v к примеру, может увеличиваться динамически.
Относительно ресурсов -не вижу проблем. Опытным путем по реальной нагрузке определите какие ресурсы требуются и выделите их. Но конечно чудес не бывает и если производительности/ресурсов хоста недостаточно, то конечно будет тормозить.
Поскольку у Вас все на linux, возможно для Вас более подойдёт esxi.
(17) Сначала Win10, который потребует памяти просто для себя 2,5 Гб.
Потом из-за этого поменять сервер на новый +150К руб
А потом за одно и Postgres с apache поменять на MSSQL и IIS, заодно перейдя на Win Serv 2xxx
)))
А все почему? Потому что для Системы , Постгрес, и Апаче достаточно 1Гб ОЗУ, а может и того меньше, а вот 1Су подавай 16 Гб не меньше.
Ну уж нет, наш путь через терни к звездам, только Трэш и Угар.
(18)Ну по моему Вы несколько преувеличиваете ;)
Не очень понимаю, откуда Вы взяли 2.5 Гб, я бы уменьшил цифру раза в 4. И тем не менее, у Вас останется 5.5 Гб, из которых 3.5 заберёт по максимуму сервер 1с, 1 Гб вполне достаточно для веб-сервер, если у Вас не хостинг, остальное для сервера БД, коим вполне может быть sql server express, если размер базы не превышает 10 Гб. Если превышает то любая бесплатная из поддерживаемых. Реально, ему достанется гига 2-3.
Ну вот как то так :)
Но это лишь одно из возможных решений.
(13) То про что я говорю с официального сайта Докер.
Containers and virtual machines
A container runs natively on Linux and shares the kernel of the host machine with other containers. It runs a discrete process, taking no more memory than any other executable, making it lightweight.
By contrast, a virtual machine (VM) runs a full-blown “guest” operating system with virtual access to host resources through a hypervisor. In general, VMs provide an environment with more resources than most applications need.
- Распакуйте x64 rpm руками и подключайте модуль из него.
- Настройте на x64 сервере перезапуск рабочих процессов
- Разберитесь, кто жрет память, и устраните
- Распакуйте x64 rpm руками и подключайте модуль из него.
Так не работает, просит еще модули от х64 платформы, при это я распаковал руками все которые он просит, по одному, всего оказалось около 10 файлов, после чего Апач то запустился, а вот к базе подключиться все равно нельзя.
- Настройте на x64 сервере перезапуск рабочих процессов
Такой вариант был, отказался в пользу ночного рестарта сервера через Cron.
Дело в том что перезапуск процессов, по ограничению памяти, происходит в любой момент времени, при активной работе, это может происходить по нескольку раз в день при оптимальных настройках.
А при большем объеме памяти в настройка, это все равно происходит в дневные часы пик, но из-за того что механизм перезапуска процессов требует сначала старта нового процесса который сразу со старта отжирает 4 Гб ОЗУ (невиртуальной), это все завешивает сервер минут на 5-15 при ограничении безопасного расхода 8-9Гб, и на 20-30 минут при 10,5 Гб.
В тоже время как я написал при настройке 8 Гб, перезапуск происходит уже несколько раз в день, а при меньших значениях, ещё чаще. Со старта Сервер 1С просит 4-5 Гб.
- Разберитесь, кто жрет память, и устраните
Ох!. если бы я знал как это сделать. Хотя я знаю, Сервер 1С жрет. :)
Куда он её жрет я понятия не имею.
Если подскажете как с этим справится посмотрю.
Наверное, фоновые задания грузят, посмотреть - не нужные отключить:)
Фоновые все лишние отключены естественно, оставлены только те что необходимы.
Напоминаю, что на данной системе запускал х32 Сервер, в режиме Клиент-Сервер через VPN.
х32 со старта просил 0,6 Гб. при нагрузке его объем рос до 1,2Гб. Никаких проблем.
А вот х64 со старта сразу отбирает 4-5 Гб.
Я так полагаю что в х32 версии, сервер 1с по другому работает с памятью и берет только то что нужно, а в х64, он фигачит в кэш все что не попадя, типа адресного пространства дофига, почему бы не хранить в памяти всю базу целиком и все рассчитанные временные таблицы, вдруг пригодятся. Только вот памяти то немного.
Есть ещё сервер №3, в другом месте, там ОЗУ 24Гб, нагрузка правда меньше и база всего одна рабочая, там в процессе работы потребляет не более 6 Гб, и настроен перезапуск процессов, который проходит абсолютно безболезненно.
А так опытным путем замечено , чем больше баз на сервере , тем больше ему требуется памяти со старта. Для одной УТ х64 серверу хватает и 6Гб, а вот для 5-6 ИБ, для нормальной работы нужно не меньше 16Гб на борту, и 12Гб под 1С.
Но это касается только х64 версии.
На х32 например крутится 1 УТ + 4 БП + 3 ЗУП. совершенно нормально.
Настройка стоит запускать ещё 1 процесс при 12 ИБ или 24х соединениях, за 2 года, только один раз закрашилось с ошибкой: Недостаточно памяти. т.к. там это все на Win, и процессу доступно только 2 Гб.
При этом Сервер 1С не имеет никаких настроек по допустимому расходу памяти, как например Postgres. Только рестарт процесса при превышении.
Что как оказалось не вариант. Я точно уверен что на самом деле 1Су столько памяти не нужно, но освобождать он её не хочет, а тупо свопится.
А в чем сложность? В строчке конфига (файл /etc/httpd/conf/httpd.conf) апача просто укажите 64х битный модуль (скачайте файлик с 64х битного дистрибутива 1С сервера) вместо 32х битного: LoadModule _1cws_module "/1C/x86_64/wsap24.so"
(11) Да про докер писали выше, склоняюсь к этому варианту.
Апач правда нужен 2.4, т.к. SSL (2.2 тяжело с ним дружит, особенно что касается современной криптографии)
Нашел простой рабочий вариант https://gee12.space/stavim-1s-83-32-bit-na-debian-9-64-bit/ Суть сводится к установке сперва 64 бит сервера и переименованию/переносу папки с сервером 64 бит (иначе после удаления пакета папка удалится), затем к удалению 64 бит сервера и установке 32 бит сервера. Публикуем базу, но в конфе апача указываем путь до папки с 64 бит сервером. Всё работает.
(22) Благодарю. Работает! Устанавливаем х64, копируем куда то из /opt/1C/v8.3/ папку "x86_64". Удаляем х64, ставим х32. Возвращаем папку "x64_64" в /opt/1C/v8.3/ . Ставим апач. Мне не потребовалось указывать путь до папки с x64, всё само.
(23) А какую версию ставил?? У меня 8.3.13 работает, а 8.3.15 и выше - нет.
все службы работают., а при заходе через Веб -выдает:
1C:Enterprise 8 application error:
Error loading component pack:
:-(((