1с ошибка при выполнении запроса post к ресурсу e1cib misc

Обновлено: 07.07.2024

Недавно столкнулся с неприятной ошибкой на одном из старых серверов с 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С

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

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

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

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

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

Заключение

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

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

Перевод и причины дисфункции

Проблема возникает на серверной версии программы, причём после установки очередного обновления к «1С». Проблемными стали версии программы 8.3.6, 8.3.8.хх, 8.3.9.ххх, на которых рассматриваемая мной дисфункция возникает наиболее часто.

Данная ошибка возникает случайно, в большинстве случаев не имеет каких-либо закономерностей при своём появлении, чем раздражает довольно многих пользователей, заваливающих техподдержку 1С «письма счастья».

Картинка ERROR

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

Чтобы избавиться от ошибки рекомендую выполнить следующее:

Скрин администрирования 1С

  • Выполните стандартное «Тестирование и Исправлении» (ТиИ) вашей базы данных. Данная операция осуществляется переходом в «Конфигуратор», где во вкладке «Администрирование» необходимо выбрать опцию «Тестирование и Исправление». Операцию необходимо осуществлять в монопольном режиме, потому никого кроме вас в базе быть не должно. Перед выполнением указанной процедуры рекомендуется сделать страховочную копию ваших баз данных;
  • Установите наиболее свежие обновления к вашей версии 1С. Поскольку пик появления данной ошибки пришёлся на 2016-2017 годы, то с тех пор разработчиками был выпущен ряд обновлений, позволяющих устранить данную ошибку. Установите свежие апдейты для вашей «1С», и если не помогло, то идём дальше;
  • Откатите программу до прежней версии. В некоторых случаях (когда у пользователей было установлены самые свежие обновления) помог откат программы до более ранней (и более стабильной) версии программы;
  • При доступе к серверу 1С рекомендуется почистить кэш. Остановите на сервере службу под названием «агент сервера 1с предприятие», в каталоге кэша сервера удалите всё кроме файлов, имеющих расширение *.1 Примерный путь к каталогу может быть:

После чего вновь запустите указанную службу;

Заключение

Основным фактором возникновения ошибки запроса POST к ресурсу /e1cib/logForm является некорректно написанный разработчиками код обновления к программе «1С». Эффективным решением возникшей проблемы станет обновление вашей версии 1С до самой свежей версии, где рассматриваемая дисфункция уже исправлена, и появлений рассматриваемой ошибки более не наблюдается.

Причины ошибки в 1С

Изменяем режим запуска для пользователей

Часто ошибку можно решить довольно просто. Для этого вам необходимо войти с правами администратора и изменить настройки учетной записи пользователя. Нужно выбрать редактирование информационной базы и в поле «Основной режим запуска» поставить галочку на «Выбирать автоматически». Сохраните эти изменения, и ошибка должна пропасть.

Окно редактирования информационной базы

Устранение сбоя при выполнении запроса GET к ресурсу

Из-за переполнения кэша программы, могут возникать разные ошибки. Так как для стабильной работы с новыми формами необходимо свободное пространство буфера быстрого доступа. Часто освобождение этого буфера помогает программе снова начать работу без каких-либо проблем.

Конфигурация диалога запуска 1С

  1. Чтобы очистить кэш, вам нужно в 1С найти к нему путь. Он находится в той же папке, что и программа;
  2. Выберите кнопку «Настройки»;
  3. Найдите путь в этом окне. Вы можете скопировать путь и вставить его в проводнике, чтобы быстро попасть в нужную папку;
  4. В ней будут файлы с длинными случайными наборами символов в качестве имен. Их все нужно удалить. Это и есть кэш 1С.

Если ошибку получится удалить этим способом, вы можете использовать настройки программы таким образом, что при каждом запуске кэш будет удаляться автоматически. И вам не придется каждый раз его чистить.

Запуск утилит для исправления ошибок 1С

В программном комплексе 1С включены специальные утилиты, которые могут помочь пользователю решить проблемы при работе. Если вам еще не удалось устранить дисфункцию при выполнении запроса GET к ресурсу e1c/ibc/micommands:

Каждый из параметров позволяет выполнять дополнительные проверки над теми или иными данными программы:

  • Реиндексация таблиц — ревизия индексов таблиц. В ходе тестирования будет произведена реиндексация. Не убирайте с него галочку. Эта процедура пойдет программе на пользу;
  • Проверка целостности базы — база данных будет перепроверена. Если будут найдены неполадки, утилита исправит их. Также полезная функция, которая не будет лишней при запуске;
  • Проверка базы ссылок — будут найдены неверные указатели, ссылки и действия над ними передаются пользователю;
  • Реструктуризация таблиц — эта процедура занимает много времени. Поэтому применять нужно только в случае реальной необходимости. В результате её действия структура таблицы будет пересоздана;
  • Сжатие таблиц — также полезный параметр, в процессе удаляются элементы данных, в которых уже нет необходимости.

Добавление памяти для 1С

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

Чтобы избавиться от ошибки с памятью:

  1. Откройте меню «Пуск». Запишите в пустой строке поиска «Командная строка»;
  2. Выберите её в результатах ПКМ и запустите от имени администратора;
  3. Введите команду: CMD и нажмите клавишу ввода;
  4. Курсор перейдет на другую строку, в ней запишите: bcdedit /set increaseuserva 3072 и нажмите ENTER. В цифрах выражается память в мегабайтах. Здесь вы можете указать свое значение, относительно установленной в компьютере оперативной памяти;
  5. В системных настройках можно узнать, сколько памяти есть в компьютере. Для этого нажмите вместе WIN+PAUSE.

После этих действий перезагрузите компьютер и проверьте, появляется ли ошибка при выполнении запроса GET к ресурсу e1cib/cmi/commands.

Поступило обращение со следующей ошибкой:
"Неспецифицированная ошибка работы с ресурсом
Ошибка при выполнении запроса POST к ресурсу /e1cib/login:

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

При появлении возможности, запуск будет выполнен автоматически.

Нажмите "Выполнить запуск" для немедленной попытки запуска.




Настроив ТЖ с событием EXCP, EXCPCNTX обнаруживаем запись:

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

Недостаточно памяти для получения результата запроса к базе данных

Открываем конфигуратор и переходим в указанный модуль к указанному номеру строки кода:


ВнешниеОбъектыХранилище = Константы.ДокументооборотСКонтролирующимиОрганами_ВнешнийМодуль;

ДвоичныеДанныеОбработки = ВнешниеОбъектыХранилище.Получить().Получить();

Смотрим тип объекта (константы), к которой идет обращение:


Проверяем, какой объем данных фактически занимает константа.



На диске таблица занимает всего 4688 Кб = 4,6 Мб. Размер является незначительным, причина не в константе.


32-разрядный кластер 1С имеет ограничение, примерно, 3.8 Гб, по достижении которого происходит падение процесса, службы.

В режиме отсутствия нагрузки rphost занял 3,2 Гб, что близко к порогу падения.

Подобные падения будут происходить в любой момент времени.

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


- сменить 32-разрядный кластер серверов 1С на 64-разрядный;

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

Так как на сервере используется 14 ядер процессора, то необходим переход на платформенные лицензии КОРП.

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