Увеличить память apache 1c

Обновлено: 07.07.2024

Добрый день, столкнулся с проблемой: Есть сервер - Centos 7, на нем крутятся базы 1С, так как почти все базы перешли на управляемые формы, решил опубликовать базы на Apache. Все хорошо, пользователи счастливы, но есть один момент - счастливы до момента пока память есть. Суть проблемы: всего порядка 40 баз. Каждое подключение к каждой базе - нагружает Apache примерно на 1Гб, после закрытия 1С и открытия другой базы - еще 1Гб. Итого каждое подключение к каждой базе 1Гб.. Если за день они откроют порядка 30 баз (на сервере 32Гб памяти) - память на сервере кончается и нужен ребут.

Настроен mpm-worker, но особого эффекта это не дало. память не выгружается. Пока решил проблему в лоб, swap увеличил до 30Гб, перенес на raid 0, включил zswap. В принципе до конца дня сервер кое как справляется..но это хрень какая то.

Изучив вопрос я понял что Apache глубоко пофигу, он запускает 1совскую so, и уже она запускает базы, и по большому счету это проблема 1с. Но зная 1с эту проблему не решить.

По этому вопрос: можно ли как то со стороны Apache понять какой процесс уже не нужен, и выгрузить их?


Попробуй в конфигураторе 1С
Администрирование -> Параметры информационной базы
Там задать время меньше.
Debian 8 полет нормальный.

У тебя файловые базы что-ли?

Вечером проверю, отпишусь

Да, размер баз до 1,5гб, одновременно пользуется только 1 человек. Смысла в клиент-сервере нет. Но если проблему решить не получится..буду думать в эту сторону..


У меня правда PGSql стоит.

Смысел как раз есть. В клиент-серверном режиме воркеров (rphost) должно стать намнооого меньше — вангую один-три.

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

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

Кстати, 3 года назад столкнулся с такой же проблемой, но не смог её решить и в итоге отказался от этого эксперимента:
Как безопасно разместить много баз 1С:Предприятия на одном сервере?

Но у меня удачно получилось разделить базы по правам (если тебя волнует безопасность, чтобы клиенты не могли шариться по базам других клиентов через ФС) с помощью mod_apparmor.

Протестировал на разных платформах с разными параметрами, на сколько я понял - проблема в 1С.

Запустил тот же apache на Win10, ту же платформу 1С - память освободилась ровно через 20 минут (как и заявлено в описании платформы)..

Значительное потребление памяти процессами кластера на сервере приложений

У кластера серверов 1С Предприятия есть несколько настроек перезапуска процессов по превышению порога памяти. Их можно найти в параметрах кластера в консоли администрирования(рис. 1).


Рис. 1. Параметры кластера.

Подробная информация по настройкам указана на странице ITS.

Рекомендуется всегда настраивать параметры

  • Допустимый объем памяти
  • Интервал превышения допустимого объема памяти
  • Выключенные процессы останавливать через

"Допустимый объем памяти" стоит устанавливать из расчета, того, что в случае срабатывания условия превышения показателя будет запущен ещё один процесс rphost того же объема, как при нормальной работе кластера серверов в этой информационной системе.

Например, на рабочем сервере имеем 12 Гб ОЗУ. Допустим для конкретной информационной системы характерен размер rphost около 3 Гб. В этом случае порог превышения памяти следует рассчитывать следующим образом:

"Допустимый объем памяти" = 12 ГБ - 2 Гб (объем, занимаемый процессами системы) - 3 Гб * 1 rphost (объем всех процессов rphost) = 7 Гб. Т.е. процесс rphost в худшем сценарии может вырасти до 7 Гб.

Для случая, когда у нас при штатной работе используются два процесса rphost.

"Допустимый объем памяти" = 12 ГБ - 2 Гб (объем, занимаемый процессами системы) - 3 Гб * 2 rphost (объем всех процессов rphost) = 4 Гб. Т.е. процесс rphost в худшем сценарии может вырасти до 4 Гб.

Такая рекомендация исходит из особенностей поведения в момент перезапуска процессов кластера. Как это происходит:

  • процесс rphost превышает "Допустимый объем памяти" в течение "Интервал превышения допустимого объема памяти" секунд, срабатывает условие перезапуска процессов кластера.
  • запускается "новый" процесс rphost
  • "старый" процесс rphost выключается, но не завершается
  • соединения назначаются на "новый" процесс rphost, который сразу полноценно включается в работу
  • "старый" процесс будет исполнять вызовы (которые ещё существуют) максимум в течение ещё "Выключенные процессы останавливать через" секунд, но не более того.
  • через время "Выключенные процессы останавливать через" "старый" процесс rphost завершается.
  • новый процесс полноценно работает

Т.е. в течение периода, указанного в "Выключенные процессы останавливать через" будет одновременно работать как минимум два процесса rphost: "старый" и "новый".

Не следует указывать "Допустимый объем памяти" меньше нормального рабочего объема памяти процесса rphost для вашей системы, т.к. противном случае у вас постоянно будут перезапускаться процессы кластера серверов.

  • Интервал превышения допустимого объема памяти
  • Выключенные процессы останавливать через

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

Чем больше значения указанных параметров, тем менее эффективен может оказаться механизм перезапуска процессов, но зато позволит "успешно выполнить" большее число вызовов.

Ошибка в приложении

Для выполнения описанных действий требуется учетная запись Администратора.

Вариант №1 решение проблемы заключается в увеличении памяти процесса 1С

Шаг 1. Запускаем командную строку. Откройте командную строку Windows. Воспользуйтесь меню «Пуск» или комбинацией клавиш Windows +R и введите команду:

Окно приложения «Выполнить»

Рисунок 2 - Окно приложения «Выполнить»

Шаг 2. В появившемся окне наберите команду:

Для примера, увеличим ограничение до 3,2 Гб. Увеличивать ограничение стоит аккуратно и постепенно.

Командная строка. Увеличение памяти

Рисунок 3 - Командная строка. Увеличение памяти

Шаг 3. После подтверждения успешного завершения операции в окне командной строки, перезагрузите ПК и попробуйте еще раз выполнить действия, которые привели к ошибке. Если проблема не решена и 1С по-прежнему вылетает – можете еще раз увеличить ограничение.

Шаг 4. После успешного завершения операции без ошибки в 1С, восстановите ограничения Windows по умолчанию командой:

Это необходимый шаг, чтобы 1С не оказывала влияние на работоспособность ОС и других приложений.

Командная строка. Снятия ограничения

Рисунок 4 - Командная строка. Снятия ограничения

Вариант №2 решение проблемы заключается в завершение неиспользуемых сеансов в консоли администрирования 1С

Заходим в Администрирование серверов 1С Предприятия x86-64 выбираем Локальный кластер и с помощью правой кнопки мыши выбираем Свойства:

Вызов свойств локального кластер

Рисунок 5 - Вызов свойств локального кластер

В появившемся окне выбираем Принудительно завершить проблемные процессы:

Параметры кластера

Рисунок 6 - Параметры кластера

И нажимаем Ок.

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

Последний метод возможен при использовании «Корпоративной лицензии».

Заходим Кластеры - Локальный кластер - Рабочие серверы и на названии сервера выбираем Свойства:

Вызов свойств рабочего сервера

Рисунок 7 - Вызов свойств рабочего сервера

И в ячейке Временно допустимый объем памяти процессоров устанавливаем допустимое значения в байтах.

Окно параметров рабочего сервера

Рисунок 8 - Окно параметров рабочего сервера

Если вам требуется помощь специалиста в настройке, оптимизации сервера 1С:Предприятие, либо переносе в облако, свяжитесь с нами любым удобным способом.

Величина памяти конкретного сервера 1С, позволяющего работать в оптимальном режиме, зависит от многих факторов, в том числе:

  • кода конфигурации;
  • объема данных в таблицах;
  • количества и активности пользователей в системе.

В связи с этим размер необходимой оперативной памяти можно рассчитать только приблизительно: при наличии 10 работающих пользователей оптимальным будет 8 ГБ, но если их количество превышает 50, следует приобретать от 32 Гб.

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

Причины возникновения ошибки

В процессе работы с 1С 8.3 проблема «недостаточно свободной памяти на сервере» является одной из наиболее распространенных, что может быть вызвано рядом причин. Первая из них напрямую вытекает из вышесказанного ‒ отсутствие достаточной мощности.

Недостаточно свободной памяти на сервере 1С предприятия
Недостаточно свободной памяти на сервере 1С предприятия

Неправильная настройка параметров (допустимый объем памяти), загрузка большой базы данных, обработка сложных по своей структуре файлов ‒ тот краткий спектр событий, влияющих на появление рассматриваемой проблемы.

Почему памяти может еще не хватать?

Нехватка памяти для осуществления всех процессов

Основная цель создания сервера 1С:Предприятия заключалась в разработке универсального бухгалтерского средства, позволяющего выполнять различные по своей специфике задачи. Исходя из этого, конкретный пользователь имеет в своем распоряжении разнообразные дополнительные таблицы SQL и реквизиты. Программа не может предугадать степень их использования, поэтому осуществляет их постоянную загрузку в сервер.

Ошибки кодирования

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

Ошибки программы

Сама по себе программа 1С:Предприятие не является идеальной и содержит в себе большое количество багов. Пример: открытие произвольной формы обработки в соответствующем модуле. После выполнения данного процесса обработка зависает в памяти, что не позволяет пользователю работать дальше.

Как решить проблему «недостаточно свободной памяти на сервере 1С:Предприятия

Недостаточно свободной памяти на сервере 1С предприятия

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

Другие варианты решения проблемы

  • При работе используйте СУБД MS SQL, а не файлы dt.
  • Перенесите службы сервера 1С на другой компьютер или сервер.
  • Обновите платформу (конфигурацию). Обратите внимание: база перед этим должна быть выгружена!
  • Возможно, ваша версия FrameWork устарела, или попытка ее обновления была неудачной. В данном случае откатите сервер 1С и FrameWork к предыдущей версии, после чего повторите установку.
  • Сервер может выполнять слишком много заданий: проверьте это с помощью КонсольЗаданий.epf и отключите в случае необходимости.
  • Проведите тестирование базы данных в режиме Конфигуратора, а также ее физической целостности. Для осуществления последнего запустите файл ChDBFl.ехе из каталога установки программы.
  • Выполните оптимизацию кода и запросов (упростите их). Выше объяснялось, что загруженность программы напрямую влияет на объемы используемой ей памяти.

Бонус: «обманите программу»

Запустите командную строку Windows и нажмите Enter.

Перед вами откроется черное поле для ввода. Введите в нем команду, которая позволит увеличить ограничитель используемой памяти до 3,5 ГБ: «bcdedit/set increaseuserva 3500». Данный показатель может быть и другим, но увеличивайте его в пределах разумного

Недостаточно свободной памяти на сервере 1С предприятия

Перезагрузите компьютер. После этого проверьте сервер 1С на предмет повторного возникновения ошибки. Заданная величина ограничителя оказалась недостаточной? Вернитесь в пункт 2.

После устранения ошибки и выполнения необходимых действий в программе восстановите ограничитель. Для этого введите в командной строке команду «bcdedit/deletevalue increaseuserva». Не пренебрегайте этим пунктом!

Вышеуказанные пути решения не помогли? Обратитесь за квалифицированной помощью к специалистам.

Читайте также: