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

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

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

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .

Введение

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

Невосстановимая ошибка
Ошибка при выполнении запроса 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 грузит процессор.

Онлайн курс "DevOps практики и инструменты"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по .

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

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

Автор Zerox

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

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

  1. Аватар
    Аноним

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

    • Zerox

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

  2. Аватар
    Михаил

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

    • Zerox

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

      • Аватар
        Андрей

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

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

Ваш адрес email не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.