1с соединение с базой данных не удерживается
Имеется 1С УПП 1.3.3.1. Клиент-серверный вариант. Сервер под управлением Ubuntu 12.04 + postgresql 9.2.1 + платформа (сервер) 1С 8.2.19.
Рабочие станции под управлением Windows + платформа 8.2.19
Периодически (часто) на рабочих станциях вылетает ошибка Ошибка SDBL:Соединение с базой данных не удерживается. Отпустить конктекст соединения невозможно.
Причём ошибка вылетает только при работе с базой УПП. При работе с другими базами (конфигурациями) такой проблемы замечено не было.
В интернете много «информации» по этой проблеме, но решений точных нет. Причём в основном пишут об этой проблеме те, кто использует сервер под Windows и базу данных MSSQL. Соответственно проблема не связана с серверной платформой и базой данных.
Также на сервере 1С (где работает кластер и рабочие процессы) был замечен самопроизвольный перезапуск рабочих процессов rphost и менеджер rmngr. Причём по наблюдениям появление ошибки практически совпадало с временем перезапуска.
Перезапуск самопроизвольный (падение)! В настройках кластера в настройках перезапуска рабочих процессов везде нули!
Решение проблемы было найдено самостоятельно с помощью анализа логов сервера 1С и Google.
В логах сервера 1С были замечены ошибки:
descr=Too many open files line=922 file=./src/DataExchangeCommon.cpp’
Google подсказал, что надо увеличить количество открываемых файлов.
Михаил Сайко
Различные конфигурации 1С из-за сложности кода, бывает, огорчают администраторов и пользователей ошибками. Многие из них легко устраняются, но существуют и те, что способны испортить достаточно «крови» ИТ-службам. Одна из таких ошибок известна в кругах специалистов по 1С под именем «Ошибка SDBL».
Исправление ошибки SDBL в 1С
- Ошибка при полнотекстовом индексировании;
- Попытка вставки значения недопустимого типа;
- Поле таблицы не может принимать значение NULL;
- Ожидается выражение (pos = );
- Пропущена точка с запятой;
- Выход за пределы размерности;
- Поле определено неоднозначно.
Если все эти методы не дали результата, то для клиент-серверного варианта базы 1С можно попробовать очистить таблицы _ConfigChngR_ExtProps и _ConfigChngR. Делать это доверьте профессионалу, умеющему работать с MSSQL. В подавляющем большинстве случаев один из этих методов обязательно поможет. Если же ошибка осталась, и у вас нет резервной копии, следует обратиться к профессионалам за помощью.
Среди набора патчей, которые сегодня выпустила компания Microsoft, выделяется один интересный фикс под номером MS15-011. Этот патч закрывает уязвимость в алгоритме работы Active Directory, которая была обнаружена ещё в январе 2014 года работниками компании JAS Global Advisors. Всё это время существование бага, названного JASBUG, держалось в секрете. Интересно, что эта уязвимость была и в самой первой версии Active Directory, появившейся аж в 2000 году.
Active Directory – это система, позволяющая администраторам проводить настройку компьютеров пользователей, находящихся в их сети. Компьютеры принимают команды от сервера и выполняют их. Уязвимость была в алгоритме обработки DNS. Компьютер пользователя теоретически при помощи атаки вида «man-in-the-middle» мог быть обманут таким образом, что вместо корпоративного сервера он стал бы принимать команды от ложного сервера, поднятого хакером.
В записи в своём блоге Microsoft подробно описала возможную технологию атаки:
110. Происходит эпизодически, причем может не проявляться 2 недели, затем выбрасывает одного пользователя и часто начинает выбрасывать случайных пользователей, помогает перезагрузка серверов.
Куда копать?
(3) админ смотрел в прошлый раз когда ошибки посыпались, говорил что нечего необычного там нету
(4) я вам скажу быть не может, у меня если пользователя китдает, то у СУБД есть ошибка. там вообще даже, если ошибка транзакции есть, и то должно быть Предупреждение событие у СУБД. у меня iBM DB-2 Express.
не верь админам, мой вообще мне такие вещи втирал, неделю на файловой работали, вместе СУБД, узнал, когда решил зайти в 1С, увидел путь .
какой протокол соединения сервера 1с и субд ?
если named pips - то поменяте на shared memory или TCP .
(7)
неоднократно встречал ситуации
что 1с8 соединялась с ms sql server
по протоколу
кто был инициатором 1с или ole db клиент - не знаю.
по поводу "вроде" желательно ссылочку.
клиенты к серверу обращаются только по tcp, нечего там смотреть. А вот сервер может обращаться к СУБД по named pipes или tcp, по named pipes может обращатся если сервер 1с и субд расположенны на одной машине.
06:31.5890-0,EXCP,0,process=rphost,ClientID=121,Exception=NetDataExchangeException,Descr=Ping time out expired on connection
Вот такое исключение словил. Можно ли говорить что есть проблемы с сетью, если люди работают в терминалах и физической возможности аварийно завершить работу сети нету.
(14)(16) Подскажите как понять в каком звене СУБД - сервер 1с был разрыв соединения?
гипотетически подозреваю, что между сервером 1с и СУБД так как не указан пользователь.
на уровне тср/udp как правило при сбое оборудования и аттаках.
например в developer версии по умолчанию доступно 5 подключений
и в случае коллизий два и больше процесса их могут исчерпать.
Сегодня проблема повторилась. В технологическом журнале в этот момент были следующие ошибки.
Ошибка SDBL:Соединение с базой данных не удерживается. Отпустить контекст соединения невозможно.
Заметил, что в этот момент в папке логов технологического журнала создается несколько папок rphost с разными id и лог пишется параллельно, хотя в процессах и в настройках сервера 1с есть только 1 рабочий процесс. Пользователи которых выкидывает видны в консоле сервера 1с, но колонка сервер пустая
Есть какая-то стандартная функция, возвращающая соединение к SQL собственной базы? Надо UPDATE запустить. Типовая вещь должна быть вроде.
Но для этого нужны 5 секунд поиска и 1 примитивнейший запрос в поисковик
(0) С чего это типовая вещь и почему она должна быть? 1С в клиент-сервере - это трехзвенка, доступ до СУБД никто не обещал.
В общем за все эти годы одинэсники даже самое простое не написали.
(7) Ага. Извини, пожалуйста - придется тебе самому. Справишся?
(7) Они написали самое простое. То, что обычно не читают. Называется "лицензионное соглашение".
(11) И что тебе в этой статье не понятно? Там же всё черным по белому расписано.
(11) Готовой функции ПолучитьЗначениеИзБазы нет в статье. Написано что есть ADODB или SQLOLEDB или. А готового нет.
Зачем понятия подменять? при чем тут "понятно" и "есть готовое"?
Там написано "Учимся получать доступ к СУБД из 1С." Чем оно готовое? Как раз наоборот.
В статье тоже не готовое. Хотя на готовое ПолучитьЗначениеИзБазы в примерах ссылает.
Как это связано с тем, что ПолучитьЗначениеИзБазы нет?
Штаны тоже можно научиться шить самому, все разжевано. Бурда моден а не среда.
"Есть какая-то стандартная функция, возвращающая соединение к SQL собственной базы?" - и каждый как обычно разговаривает что-то свое. А по теме нечего сказать?
864666 попытка завести тематическую ветку.
"Видимо, место здесь такое" (с) Жмурки
(21) Значит автор и ему подобные врут про ПолучитьЗначениеИзБазы(ТекстЗапросаSQL)?
+(23) есть в открытой публикации хоть одна такая функция?
(24) Не Жужжите.
(0) Доступ к БД иначе как средствами 1С запрещен лицензионным соглашением. А 1С не предоставляет прямого доступа к базе, потому что 90% 1Сников положат базу, будь у них такая возможность. Запускать UPDATE при работающем серверном процессе - вообще за гранью добра и зла. У сервера есть свой кеш, и он не рассчитан на то, что кто-то будет запускать UPDATE в базе.
(26) В соседней ветке один друг пытается 470 000 пачек сигарет отгрузить одной фурой и у каждой пачки своя марка. А после этого ему надо базу 1С свернуть по прошлым периодам. Что же будет делать 1С в связи с этим?
(27) Доработает интерфейс программы, чтобы коробки лучше продавались.
(28) Какой интерфейс? Будут блокнотики и карандашик в коробку вкладывать? Скажут "работайте на мягких регистрах".
(31) ну иди в фузину. Зачем в 1с пришел? Изначально же понятно, что это тормоза?
(27) 1С тут не лимитирующий фактор. Ведь эти коды надо еще сосканировать каждый ;)
(0) Чего сложного через ADODB.Connection порубиться, и делай что хочешь.
(35) Да, давно пора перевести на rfid. А потом заказать в Китае сканеры, которые полмиллиона кодов за раз берут. Кетайцы оху@ют и пришлют две деревни крестьян в контейнере.
(36) Чего сложного написать свою ОС на ассемблере.
были люди в наше время, Не то, что нынешнее племя: Богатыри — не вы! Плохая им досталась доля:
(37) Да, Вася. Тебе до твоего тёзки - как Маску до Альфы Кассиопеи в позе гордого моллюска.
(37)обычно говорят я делал то-то и то-то.Что не получилось. А ты ничего не сделал, не попробовал, а просто требуешь готовое. "А кушать вы за меня тоже будете?" Ага!
(38) Одинэсу до консоли скуля видимо ближе.
(39) Кто кому говорят? В смысле чтобы функция появилась нужно позаклинать?
Человеку нужно соединение с БД на прямую, для которого и через ADODB.Connection нужены Логин/Пароль на SQL, не говоря уже о адресе сервера и имени БД, которые можно получить средствами 1С.
Логин/Пароль нельзя получить из снеговика.
(39) Точно.
(40) Нет, заклинанание не надо. Надо миллион долларов и личная встреча с братьями Нуралиевмыи, чтобы они за эти деньги дали команду своим наемным работникам добавить в платформу "1С:Предприятие 8" ту функциональность, что тебе нужно.
ПыСы: сумма взята с потолка, реальная сумма выяснится после того, как сторгуешься с братьями Нуралиевмыи
+(42) Читать: братья Нуралиевы. Это была опечатка, а не коверкание.
(41) У снеговика оно все уже есть. Иначе как он в скуль ходит?
(44) Сестры сделали матрицу, а у этих сплошное дежавю. Все чего-то меняют.
(45) Ни разу пока.
(47) Нет, их в муках рожают.
(48) Не подсказывай.
(48) восхищённый зритель видит чудо, и радуется
а где-то в сторонке кто-то читает заклинание. потому и магия.
(50) А где функция-то? Расскажите подробнее чего Нуралиевы читают.
У майкрософта консоль, у оракла SQL*Plus, а у 1С - лицензионное соглашение.
(52) У 1са тоже есть консоль. И не одна. Для своего языка.
Который за 100 часов делает то, что напрямую выполняется за 25 секунд..
(54) А напрямую ты все обработчики Перед и При записи вызвал? А подписки?
(60) Пруф на что? На то, что 1с работает через объектную модель и у каждой записи могут быть обработчики событий? Так это тебе в книжки для начинающих.
(61) В книжках есть про внешний источник данных (ВИД). Там никаких событий вроде нет, но ограничения на изменение данных. Никакой объектной модели. Как раз чтобы её не обошли и не построили на ВИД свои быстрые регистры и прочее введено ограничение, а так же Лицензионным соглашением. Не может одинэска конкурировать с другими решениями по скорости.
(62) Совсем запутал. Ты же вроде хотел получить программный доступ до таблиц самой базы, а теперь говоришь о внешних источниках данных. Чего в итоге-то ты хочешь? Или ты просто стебешься тут на форуме?
(62) Вот интересно. А почему ты не хочешь записать в базу SQL напрямую, редактируя секторы на диске? Это ж какая скорость получается!
110. Происходит эпизодически, причем может не проявляться 2 недели, затем выбрасывает одного пользователя и часто начинает выбрасывать случайных пользователей, помогает перезагрузка серверов. Куда копать?
мб не в тему, а журнал событий, связанный с СУБД сервером или 1С, не пробывали смотреть?
админ смотрел в прошлый раз когда ошибки посыпались, говорил что нечего необычного там нету
я вам скажу быть не может, у меня если пользователя китдает, то у СУБД есть ошибка. там вообще даже, если ошибка транзакции есть, и то должно быть Предупреждение событие у СУБД. у меня iBM DB-2 Express. не верь админам, мой вообще мне такие вещи втирал, неделю на файловой работали, вместе СУБД, узнал, когда решил зайти в 1С, увидел путь .
событие - исключение учитывая Вашу тему какой протокол соединения сервера 1с и субд ? если named pips - то поменяте на shared memory или TCP .
1С сервер вроде TCPIP протокол сам пробрасывает по умолчанию .
неоднократно встречал ситуации что 1с8 соединялась с ms sql server по протоколу кто был инициатором 1с или ole db клиент - не знаю. по поводу "вроде" желательно ссылочку.
открой в 1С сервере, центральный сервер - свойства. протокол у тебя там какой?
клиенты к серверу обращаются только по tcp, нечего там смотреть. А вот сервер может обращаться к СУБД по named pipes или tcp, по named pipes может обращатся если сервер 1с и субд расположенны на одной машине.
06:31.5890-0,EXCP,0,process=rphost,ClientID=121,Exception=NetDataExchangeException,Descr=Ping time out expired on connection Вот такое исключение словил. Можно ли говорить что есть проблемы с сетью, если люди работают в терминалах и физической возможности аварийно завершить работу сети нету.
Почитал. Но у нас нету антивируса не на машине с сервером 1с, не на машине с СУБД
Подскажите как понять в каком звене СУБД - сервер 1с был разрыв соединения?
гипотетически подозреваю, что между сервером 1с и СУБД так как не указан пользователь.
либо проблема с сетью либо стоит ограничение на кол-во одновременных подключений причем это может быть как на уровне так и на уровне ms sql на уровне тср/udp как правило при сбое оборудования и аттаках. на уровне ms sql - когда происходит преподключение (по-моему раз в час или в 2) к субд, происходит долгое завершение сеанса (тоже до 2 часов) например в developer версии по умолчанию доступно 5 подключений и в случае коллизий два и больше процесса их могут исчерпать.
Сегодня проблема повторилась. В технологическом журнале в этот момент были следующие ошибки. Ошибка SDBL:Открытых транзакций нет Ошибка SDBL:Соединение с базой данных не удерживается. Отпустить контекст соединения невозможно. Заметил, что в этот момент в папке логов технологического журнала создается несколько папок rphost с разными id и лог пишется параллельно, хотя в процессах и в настройках сервера 1с есть только 1 рабочий процесс. Пользователи которых выкидывает видны в консоле сервера 1с, но колонка сервер пустая Платформа 8.2.15.319. Толстый клиент обычное приложение
Еще в забыл добавить что есть АРМ в которые заходят через web клиенты
Попал я в замкнутый круг. При нескольких рабочих процессах в веб клиенте вылетает "Параметр сеанса не инициализирован", с одним процессом вылетает ошибка SDBL в обычном приложении. Завтра попробую поставить 8.2.16.362
Возможно, на все дело в "старом" локальном кэше Попробуйте очистить локальный кэш пользователя. Детали здесь:
Были подобные проблемы. Это может быть и проблема сети, и сбой в рпхосте, и проблема в данных. Для начала тетсирование и исправление запустите. А так много чего нужно проверить что бы отловить.
Да что только не запускали. И ТиИ делали и технологический журнал смотрели. Кроме дедлоков нечего незаконного не нарыл. Решили проблему запустив 4 rphost и 1 из них 1 резервный.
Да уже недели 2-3 прошло. Я не уверен что рпхост не падает, но если он и падает, то коннекты подхватывает резервный. Так о каких вы методиках говорите? Расскажите проверю
у меня подобная проблемма была из-за паралельных маршрутов между серверами. мне помогло
2 Оно у вас есть потому что до такой подробности настроен лог инстанса ДБ2
Ну вообще то переключение на резервный(и так далее) и есть методика.(наверняка еще сервер перезагружаете) Только нужно разобраться с первопричиной, потому как чать пользователей испытывают эту проблему некотрое время.
Рестартуем rphost средствами 1с, когда он разрастается больше 800мб. Рестартуем службу агента 1с раз в неделю. Мне тяжело просмотреть все возможные "железячные" проблемы так как доступа у меня к железу нету, а админ довольно скептически относится к тому что, что-то может быть настроено не корректно с его стороны. Из программных проблем есть только дедлоки примерно 15-20 раз в день. Могут ли они послужить причиной падения rphost?
Читайте также: