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

Обновлено: 06.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-х битный сервер.

Файловая база Бухгалтерия 3.0.95.24 типовая плюс добавлены дополнительные объекты обособленно от типовой (все объекты со своим префиксом). Типовая на поддержке.
После обновления моргнул свет, в базу зайти не смогли, после чего было запущено Тестирование и исправление, свет моргнул второй раз. После чего не пускает ни в Конфигуратор нив Предприятие. Обновлением и сопровождением занималась не я. Копии к сожалению тот программист не сделал, есть полугодовой давности копия.

Мне передали только файл 1cv8.1CD. В ходе изучения проблемы какие были выполнены манипуляции:
1) тест с помощью стандартной утилиты chdbfl.exe ничего не дал. может до меня уже тестировали, история умалчивает. но она ошибок не обнаружила
2) далее изучив статьи по поводу лечения файловых баз, была скачана утилита Tool_1CD. файл 1cv8.1CD загрузился (уже хорошо), все таблицы просмотрены визуально. никаких таблиц с окончаниями "OG" нет, как пишут, что может быть при ТиИ.
3) выгружен файл конфигурации базы данных (тоже хорошо), загрузила в пустую, все ОК. конфигурация целая (загрузила ее в Tool_1CD), количество файлов в таблицах CONFIG совпадает.
4) все файлы таблицы CONFIG просмотрены (55837), не поленилась. визуально никаких нет пустых или с окончанием .new
5) есть таблица _ERRORPROCESSINGSETTINGS - не пустая! в ней один файл:
поля файла _OBJECTKEY - ErrorProcessingSettings - удаление файла ничего не дало
6) таблица _EXTENSIONSINFO - содержит один файл. тоже удалила, ничего не дало. никаких описаний про эту таблицу не нашла
7) далее прочитала, что при начала грузятся все первоначальные настройки, для этого удаляла таблицы V8USERS, _USERSWORKHISTORY и др. ничего не дало

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

Не хочется верить, что база рухнула. Визуально все таблицы в норме, нет потерянных или пустых.

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

(32) Тебе нужно попробовать с помощью Tool_1CD удалить таблицу CONFIGSAVE
По всей видимости твоя база упала в момент реструктуризации.

То есть таблица CONFIG должна быть живая.

(29) >Изначально думал поднять из сф новую базу и воспользоваться ПолучитьСтруктуруХраненияБазыДанных()

В базах даже с одинаковой конфигурацией будут разные идентификаторы.

То есть ПолучитьСтруктуруХраненияБазыДанных() даст разные данные.

выгрузите с помощью тулсиди данные и загрузите в новую . обработки загрузки есть на ис.
(42) Ключевой вопрос по DBSCHEMA - как исправлять в ней ошибки
это та самая схема в которой нет моей константы? как понять формат этого чтобы корректно внести данные?
таблица _CONST30015 в файле присутвует
(39) таблица CONFIGSAVE пуста, это как я понимаю копия конфигурации которую надо будет применить

(47) Пример как такое делать есть ?

У меня пару месяцев назад был подобный вопрос с базой.

Тоже ругалось на отсутствие в схеме базы данных.

Я не нашел способ редактировать DBSCHEMA и решил задачу выгрузкой данных через XML.

(51) Если нужно и не найдешь стукнись на мыло. Мыло в профиле. Сброшу.

Я не помню уже где скачивал.

(57) _CONST30015 переименуй в CONST30015 и будет тебе счастье .
(57) это обычный текст, не надо его разбирать
При желании, можно в json конвертнуть или в xml.. только, не за чем
(60) не выгружается падает с ошибкой
(58) у меня все таблицы тулс показывает начинаются с _
как надоест играться, выложи 1cd на файлопомойку и ссылку сюда
да выложить то могу, мне хочеться еще и разобраться как это чиниться
<"Const21517","N",21517,"",
>,"",0>,

>,"",0>,

>,"",0>
>,
,
,1,0,0>
>,1,"S",
<

>
>,
<

>
>,"",0,0>,

>,"",0>,

>,"",0>,

>,"",0>
>,
,
,1,0,0>
>,1,"S",
<

>
>,
<

>
>,"",0,0>
по идее надо имена полей и таблицы поменять и запихать обратно
(66) это развод, тк при удалении DBSchema 1с ее восстанавливает.

(68) да. не восстанавливает.проверил на 1с8.2. но как-то мне удалось восстановить DBSchema без моего участия. может подменой похожего или пустого и реструктуризацией.

Коллеги, а почему автор не хочет очистить таблицу CONFIGSAVE и просто вернуться к той конфигурации которая была ?
(71)архива с конфой-донором нет.но если типовая то конфу-донора можно сгенерировать.возвожно- это самое простое решение. очистка CONFIGSAVE не поможет. произошло рассогласование метаданных и структуры бд или таблицы проекции метаданных в структуру бд
,кот. хранится в записи dbnames из таблицы params

пока не совсем понимаю в чем различие, правильно ли я понимаю что сами метаданные это то что хранится в таблице CONFIG
структура бд это то что храниться в DBSCHEMA а проекция это то что в храниться в dbnames и dbnames должно соответвовать DBSCHEMA ?

нет. не правильно понимаете . в DBSCHEMA хранятся соответствия типов 1с и бд . и естественно DBSCHEMA должна соответствовать dbnames .но все , о чем я питсал относится к 1с8.2 . в 1с8.3 может быть по-другому.

(72) >если типовая то конфу-донора можно сгенерировать

А разве это не приведет к тому же что и создание новой базы с такой же конфой но при этом у объектов будут другие индентиффикаторы ?

(0) А как ты с этой базой столкнулся ? Может все таки есть какие то бэкапы.

Это какое то реальное безумие обновлять базу при полном отсутствии бэкапов.

(75) структура бд в новой базе может быть другой. задача - привести в соответствие метаданные , dbnames и структуру бд. поскольку тулсиди умеет выгружать-загружать конфигурацию замена конфигурации- более простая операция для файловой базы чем редактирование dbnames или изменение структуры бд.
+(75) а для серверной бд проще изменить структуру бд. и на последнем месте - правка dbnames и DBSCHEMA
Немного разобрался как свзяаны талицы. нашел свою константу в DBNames. Может ктото подскажет как ее отредактировать?
(81 )тулсиди вроде умеет выгружать- загружать таблицы. выгрузите парамс отредактируйте запись DBNames. загрузите обратно. если в DBNames будет абракадебра - то разожмите-сожмите ее c помощью v8unpack
(85) да уж.. выгружать нужно не всю таблицу, а только dbnames..только зачем ?
там нажимаешь на карандаш и внизу можно сохранить/загрузить целиком image
(90) благодарю проглядел. я вставал не поле имаж(колонка бинаридата) и жал дискетку
Мне как то попадалась база с такими симптомами, у меня сложилось впечатление что при обновлении базы записалась новая dbNames? а новая dbschema не записалась, поэтому и ругается и даже если если исправите проблему с этой конкретной константой, потом будет другая и еще другая константа, и а потом потом справочник итак далее. ДЛя исправления этого надо ручками прописать dbschema для новых и измененных объектов, а задача эта достатчно муторная. Либо проверить соответствие DBShema - dbNames? и все записи которых нет в DBShema удалить из dbNames. Затем что нибудь изменить в конфе чтобы пошел процесс реструктуризации.
Все это возможно сделать если перевести базу в SQL (у меня сработала выгрузка в dt/загрузка из dt), у меня сложилось мнение что на файловой сделать это нельзя. Хотя я уже не помню, но в SQL легче переписывать эти файлы.

:(
(94) ДЛя исправления этого надо ручками прописать dbschema для новых и измененных объектов, а задача эта достатчно муторная. как сформировать правильную схему?
Либо проверить соответствие DBShema - dbNames? да я пока вижу неторое количество новых констант. Как сопоставить пока не поинмаю только начинаю узучать

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

Поле ввода «Файл соответствия номеров» и кнопка «Замена TREF»

Иногда в процессе восстановления возникает необходимость переноса таблиц из одной базы в другую базу с такой же конфигурацией, но с несовпадающей нумерацией в DBNames. Например, разрушена таблица в центральной базе, но нужная таблица есть в периферийной базе. Кроме того, что в таких базах не совпадают имена таблиц и полей, которую можно решить правкой файла описания таблицы, есть еще проблема несовпадения типов ссылок, которые хранятся в полях с окончанием "TREF". Подробности описаны в разделе "Структура информационной базы 1С". Данный инструмент позволяет произвести замену всех значений во всех таблицах базы в полях с окончанием TREF. Список замен должен содержаться в файле, выбираемом в поле ввода. Файл представляет собой текстовый файл. В каждой строке файла содержатся два числа, разделенных табуляцией. Второе число - заменяемое. Все поля, содержащие такое значение, заменяются на первое число строки.

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

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

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

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




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

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

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

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


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

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

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


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



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


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

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

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

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


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

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

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

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