1C Ошибка при выполнении запроса POST к ресурсу

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

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Введение

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

Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/login:
по причине:
Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Ошибка выделения памяти
HRESULT=80004005,

 

Microsoft SQL Server Native Client 11.0: Ошибка выделения памяти

Изначально мне показалось, что проблема с нехваткой памяти для работы MSSQL сервера. Так что я пошел и отрегулировал ее потребление в настройках сервера. Но это не помогло. На следующий день пользователи опять периодически стали получать эту ошибку, хотя на сервере было достаточно свободной оперативной памяти. Стал разбираться дальше.

Неспецифицированная ошибка работы с ресурсом

Второй вариант текста той же самой ошибки выглядел следующим образом:

Неспецифицированная ошибка работы с ресурсом
Ошибка при выполнении запроса GET к ресурсу /e1cib/cmi/commands:
Недостаточно свободной памяти для выполнения операции

Недостаточно свободной памяти для выполнения операции

После этого я уже понял, что проблема не в MSSQL сервере, а в самой 1С. Поиск в интернете и анализ ситуации на сервере привел к пониманию проблемы. Суть ее вот в чем. Сервер 1С создал рабочий процесс rphost, который обслуживает подключения к базам данных. В моем случае сервер 1С 32-х битный, так что он ограничен по максимальному использованию памяти одним рабочим процессом.

В дефолтных настройках сервера 1С 1 рабочий процесс обслуживает 8 баз и 256 подключений. Только после превышения этих лимитов, запускается второй. Причем примерно год назад 1С сделала большую подлость - они запретили изменять эти настройки тем, у кого нет лицензии КОРП. Таким образом, с лицензией ПРОФ и 32-х битным сервером вы стали заложниками ситуации с нехваткой памяти. Исправить ее никак не сможете. Либо переходите на лицензию КОРП, либо на 64-х битный сервер. И то и другое нормально бьет по бюджету небольшой организации.

Решение проблемы "недостаточно свободной памяти для выполнения операции" в 1С

В общем случае данную проблему можно решить следующим образом. Открываем консоль управления кластером, идем в раздел Рабочие серверы, выбираем свой сервер и его свойства. Меняем 2 параметра:

  1. Количество ИБ на процесс.
  2. Количество соединений на процесс.

Свойства рабочего сервера 1С

Чтобы проблема ушла, вам необходимо уменьшить значения. Определить оптимальные сходу вряд ли получится. Для начала можете их просто уменьшить вдвое, поставив 4 и 128 соответственно.

Количество ИБ на процесс и Количество соединений на процесс

Если проблема не уйдет, уменьшайте еще. Только имейте ввиду, если у вас нет лицензии КОРП, то через некоторое время пользователи вообще не смогут заходить в базу, так как у них будет появляться сообщение о нарушении лицензии. Когда это случится, точно не известно, так как 1С выполняет проверку конфига на соответствие лицензии по своему расписанию. Может через день, а может через неделю. Если это случится, то нужно будет вернуть параметры обратно в дефолт - 8 и 256.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Если нет возможности изменить настройки из-за несоответствия лицензии, временно поможет перезапуск сервера 1С. Но работать он будет нормально до тех пор, пока очередной рабочий процесс не займет максимально возможную для себя память. На практике это в районе 3.5 Гб. После этого если не запустится новый рабочий процесс, новые подключения к базам будут невозможны. Придется раскошелиться на 64-х битный сервер.

Если у вас медленно работает сервер 1С, читайте мою статью по его профилированию - Процесс 1С rmngr.exe грузит процессор.

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

10 комментариев

  1. пока фоновые задания при старте новой версии не отработают - проблема не уйдет

  2. Одна винда, хотя в нормальных конторах в качестве сервера используется Linux

  3. Ананас

    Только что звонил в свою ИТС и там сказали, что переход с проф на КОРП будет стоить 21000 рублей. У меня ситуация интереснее. На 1 сервере вместе живут 1с БУХ и 1С ЗУП. На первой лицензия ПРОФ, на второй КОРП. Открывая консоль администрирования, в оснастке нет нужных параметров, соответствующих лицензии КОРП. Попробуем найти техническое решение вопроса.

  4. Аноним

    Достаточно уменьшить количество соединений. Количество баз оставить 8. И не будет нарушения.

    • А если проблема с базой и она одним-двумя соединениями всю память выедает?

  5. Михаил

    Конечно же в вашем случае есть одно решение, апгрейд лицензии с 32бит на 64 , все остальные - танцы с бубном. Нестандартные настройки кластера и сервера свежие платформы 1с позволяют для 10 пользовательских сессий, а дальше будет "ругаться" на нарушение

    • Спасибо за информацию. Когда навел справки, тоже понял, что это единственное удобное решение вопроса. Другое дело, что денег стоит. Сервер работал нормально много лет и тут внезапно надо выложить 100 т.р., чтобы он продолжил такую же нормальную работу. Неприятно, с учетом того, что ни количество пользователей, ни количество баз не увеличились. Наоборот, уменьшились.

      • Андрей

        Просто не нужно сразу полуфабрикаты покупать\ставить. Сервер должен быть 64 бит, без вариантов. Если нашлись деньги на 1С сервер, то найдутся и на 64.

      • Аноним

        нет, апгрейд 32 на 64 стоит 43 200 руб а не 100 тыс.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar