Нужно ли данное исправление для 8.0 SQL (клиент-сервер)?
Нет, там эта проблема не существует. А для версии 7.7 эта проблема существует во всех версиях - и SQL, и DBF.
Как узнать, что проблема решена
Вставьте в модуль проведения Предупреждение(), чтобы остановить проведение. Начните (из другой копии 1С) проводить другой документ. 1С с ошибкой станет загружать процессор на 100% пустым циклом ожидания, тогда как 1С без ошибки (или с установленным исправлением) грузить процессор не будет. Я начал свою разработку именно с этой проверки.
Установка
Плагин присоединяется в качестве одного из бинарных файлов 1С:Предприятие (чтобы 1С его загружала, я использую небольшой патч с подменой имени DLL). Управление загрузкой плагина происходит через файл ini.
Если у вас файл-серверная версия 1С (77, 8.0 или 8.1) ставьте из папки Plugin_dbf_77_80_81
Если у вас клиент-серверная (SQL) версия 1С 7.7 - ставьте из папки plugin_sql_77.
Если у вас есть и DBF, и SQL базы 7.7 - ставьте и то, и то (они друг другу не мешают).
Если у вас клиент-серверная (SQL) версия 8.0 или 8.1 - вам не нужно ничего ставить (проблемы с блокировками там нет).
Чтобы было удобнее устанавливать и (при необходимости) отключать плагин сразу у всех пользователей, имеет смысл расположить файлы 1С:Предприятие на сервере (в папке, которая открыта пользователям в режиме "только чтение"). Потребуется исправить только ярлыки на рабочем столе, чтобы они указывали туда. Это позволит оперативно вносить исправления в программные файлы 1С:Предприятие, устанавливать новые релизы платформы и т.д.
Сигнальные файлы
В настройках (ini) есть параметр - сигнальный файл. Если он указан, то файл с указанным именем возникает при конфликтах блокировки синхронно с сообщением, которое вы видите на экране. Вы можете научить ваших роботов проведения смотреть на этот файл, и делать паузу, пока пользователь проводит свой документ. Потом робот проведения должен сам удалить этот сигнальный файл.
Если у вас нет роботов проведения, или они не беспокоят ваших пользователей, то сигнальный файл вам не нужен (укажите там пустую строчку).
Исправление ошибки 1С:Предприятие 7.7/8.0 - 100% загрузка процессора при ожидании блокировки
База данных - HighLoad оптимизация
Скачать файл
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Наименование | Бесплатно | |
---|---|---|
-
.7z 130,62Kb
7928
|
7928 | Скачать бесплатно |
См. также
HighLoad оптимизация Технологический журнал Системный администратор Программист Бесплатно (free)
Обсудим поиск и разбор причин длительных серверных вызовов CALL, SCALL.
24.06.2024 5136 ivanov660 12
HighLoad оптимизация Программист Платформа 1С v8.3 Бесплатно (free)
Метод очень медленно работает, когда параметр приемник содержит намного меньше свойств, чем источник.
06.06.2024 9259 Evg-Lylyk 61
HighLoad оптимизация Механизмы платформы 1С Системный администратор Программист Стажер Платформа 1С v8.3 Бесплатно (free)
Сравним «Регистры сведений» с «Сервисами интеграции» и узнаем, кто быстрее!
28.03.2024 5006 dsdred 23
HighLoad оптимизация Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)
Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.
13.03.2024 5097 spyke 28
HighLoad оптимизация Программист Платформа 1С v8.3 Бесплатно (free)
Оказывается, в типовых конфигурациях 1С есть, что улучшить!
13.03.2024 7573 vasilev2015 20
HighLoad оптимизация Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)
Обработка для простого и удобного анализа настроек, нагрузки и проблем с SQL сервером с упором на использование оного для 1С. Анализ текущих запросов на sql, ожиданий, конвертация запроса в 1С и рекомендации, где может тормозить.
2 стартмани
15.02.2024 12419 241 ZAOSTG 80
HighLoad оптимизация Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)
Принимать, хранить и анализировать показания счетчиков (метрики) в базе 1С? Почему бы нет? Но это решение быстро привело к проблемам с производительностью при попытках построить какую-то более-менее сложную аналитику. Переход на PostgresSQL только временно решил проблему, т.к. количество записей уже исчислялось десятками миллионов и что-то сложное вычислить на таких объемах за разумное время становилось все сложнее. Кое-что уже практически невозможно. А что будет с производительностью через пару лет - представить страшно. Надо что-то предпринимать! В этой статье поделюсь своим первым опытом применения СУБД Clickhouse от Яндекс. Как работает, что может, как на нее планирую (если планирую) переходить, сравнение скорости работы, оценка производительности через пару лет, пример работы из 1С. Все это приправлено текстами запросов, кодом, алгоритмами выполненных действий и преподнесено вам для ознакомления в этой статье.
1 стартмани
24.01.2024 5669 glassman 18
HighLoad оптимизация Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)
Встал вопрос: как быстро удалить строки из ТЗ? Рассмотрел пять вариантов реализации этой задачи. Сравнил их друг с другом на разных объёмах данных с разным процентом удаляемых строк. Также сравнил с выгрузкой с отбором по структуре.
09.01.2024 14010 doom2good 49
>>Нет, там эта проблема не существует.
Это можно понимать что проблема для SQL вообще не существует? Или для 7.7 плуг все-таки нужен?
Поскольку использую еще для ДБФ - плюс однозначно.
А не повлияет ли снятие блокировок на неверные расчеты?
(учет по среднему)
скажем
(1) бухгалтер вводит документ поступление МПЗ
(2) начинает делать какой либо документ по списанию этого МПЗ
(2) закончил ввод и начинает проводить
на половине пути проведения документа вторым бухом, запускает проведение первый бух
т.е. возможна ситуация
(2) получаю остатки по МестамХранения
(1) изменяет регистр Партии и МХ
(2) получает остатки по Партиям
(2) средняя цена изменилась в сторону увеличения
в случае с блокировкой транзакций, остатки и средние суммы посчитаются верно,
а если блокировки отключены? может такое произойти и на сколько вероятно?
Также убрал внешние компоненты (плагином к программным файлам по-моему лучше), чтобы не создавать разных вариантов и лишних вопросов.
Дописал описание по поводу сигнальных файлов, и в каких случаях чего нужно ставить.
Я вот сейчас что подумал. Если проблема только в патчинге, то я могу замутить загрузчик в виде внешней компоненты. А она уже подгрузит те же самые плагины.
Неудобство с окошком о паузе, оно активизуруется при ожидании и переключает из других приложений обратно, а сообщение в трее, в случае использования опубликованного приложения Citrix'a, правильно не отображается. Хорошо, что можно отключить, и то, и другое.
В Kernel37.dll заложен аналогичный функционал, но вроде там работает по другому ...
Может в вашей компоненте заложить снятие ограничения в 1ГБ для ДБФ баз?
>> Кстати, как работает с Kernel33.dll от
Да. Поэтому и появился Kernel37. Но алгоритм у romix лучше.
>> Может в вашей компоненте заложить снятие ограничения в 1ГБ для ДБФ баз?
Данный алгоритм должен включатся до открытия файлов DBF. А алгоритм разработки может включаться и позже. Проще в разработке romix учесть при перехвате еще и имя Kernel33.
проблема существует :(
ну вот сматрите
1С:Предприятие 8.0 (8.0.18.2)
Конфа и как видишь релиз Семейство "АСТОР: Ваш магазин 6.0" (6.0.15.8)
сама база гдет 7 гигов лог транзакции около 40 ка. Гигов сервак оптерон 2 процессорный 4 гига озу пользователеи одновременно работающих и проводящих наклдые всякие 16 РОБОТОВ . Загрузка проца 100 % а оперативы жарет 4,75 . Работа всех идет в терминальном режиме. Хотел твою разработку применить в этом во всеи и помогло бы конкретно!!!!Но б..ин муха она тока на фаиловом работает а на SQL нет памагииитя плз
Самое интересное, что когда-то была другая компонента (того же автора?), "vk_sleep_1C". Грузилась она другим способом :
Если ( ЗагрузитьВнешнююКомпоненту("vk_sleep_1C.dll") = 1 ) Тогда
vk_sleep=СоздатьОбъект("Addin.vk_sleep_1C");
vk_sleep.УстановитьПаузуПриБлокировке(1024, "7.7");
vk_sleep.ПоказыватьВсплывающиеПодсказки=0; //если=1, то показывает balloon tooltips в трее при блокировке.
КонецЕсли;
То есть не патчили DLLки 1С на диске, а ремонтировали проблему как-то иначе. (Кажется читал, что тоже патчили, но уже в памяти.)
Сейчас ссылок на неё в сети почти нет (где скачать - вообще не нашел). Хотя данный вариант мне, от чего-то, более приятен, пусть уж на диске эти правообладательские ДЛЛ останутся нетронутыми, а в памяти - не проверят :)
Вполне исправно пашет... Вроде :)
Автор, чем vk_sleep_1C.dll плоха?
На сайте автора хранится куча старых его разработок, и их развитие.(Что в принципе верно, видно ход мысли, да и вообще..)
Но на эту vk_sleep_1C.dll никаких намёков.
10025077 Ввод данных в поля ввода
Проблема:
При вводе данных в поле ввода наблюдается 100% загрузка процессора компьютера.
Дата публикации: 2009-06-10
Здравствуйте, я поставил компоненту Plugin_Terminal_Sleep в фирму с базой 7.7 Dbf Торговля 9.29.
Количество пользователей более 30.
Стала появляться ошибка в определенный момент, при вводе на основании ЗаявкаПокупателя документа Реализация и попытке записать документ пишет
Объект заблокирован, т.е. только что созданный документ, еще даже не до конца созданный оказывается заблокированным.
Это исчезает только после лечения базы через тестирование и исправление, где вылезает список ошибок по потерянным шапкам документов.
После лечения некоторое время работает, потом опять те же ошибки. Я это связываю с не корректной отменой транзакции.
Размер самого большого Dbf файла не превышает 500 МБ. Общий объем базы с dbf и cdx более 4 ГБ.
Компоненту пришлось отключить!
"Компоненту пришлось отключить!"©
И помогло? ;-)
"Я это связываю с не корректной отменой транзакции."(с)
Компонента от Романа (romix) не имеет отношение к отмене транзакции.
Вы смогли устранить проблему "CodeBase Error #: -310" ?
Если не устранить эту проблему, то ошибки могут быть любые...
Опять полечил и компоненту больше не включал! Такой ошибки больше не повторялось!
CodeBase Error #: -310 была ошибка была в другой базе, в бухгалтерии 7.7, там пришлось обрезать базу, так как Dbf - файл превышал 2 ГБ.
Все запустилось и счастье где-то близко, но вернулись к проблеме "Ожидания блокировки"
Т.к. и "секретный релиз" и VK_TerminalSleep используют одну и ту же BkEnd, то либо вылетаем "Не верная версия ODBC", либо блокировки :(
Есть у кого-нибудь сборка из этих двух BkEnd в одной? или еще варианты?
АдресПолучателя = СтрЗаменить(АдресПолучателя,"<","");
АдресПолучателя = СтрЗаменить(АдресПолучателя,">","");
АдресПолучателя = СтрЗаменить(АдресПолучателя,"(","");
АдресПолучателя = СтрЗаменить(АдресПолучателя,")","");
Пока Найти(АдресПолучателя, " ") Цикл //Цикла
ПустаяМиска = Найти(АдресПолучателя, " ");
ПозГавГавки = Найти(АдресПолучателя,"@");
Гафф = ПустаяМиска - ПозГавГавки;
АдресПолучателя = Сред (АдресПолучателя, ?(Гафф>0,1,ПустаяМиска + 1),?(Гафф<0,СтрДлина(АдресПолучателя),ПустаяМиска - 1));
КонецЦикла;
для работы в 8.2 пришлось исправить:
Если НЕ Письмо.ОбратныйАдрес.Количество() Тогда
ОбратныйАдрес = Письмо.ОбратныйАдрес.Добавить();
Попытка
ЗаполнитьЗначенияСвойств(ОбратныйАдрес,Письмо.Отправитель);
Исключение
КонецПопытки;
Если ОбратныйАдрес.Кодировка = "" Тогда
ОбратныйАдрес.Кодировка = "KOI8-R";
КонецЕсли;
КонецЕсли;
перед
Почта=Новый ИнтернетПочта;
Почта.Подключиться(ИПП);
Почта.Послать(Письмо);
...
Там может быть уже это реализовано ЕМНИП, посмотрите в документацию, вроде бы Hogik встраивал то что нужно в свою DLL.
А проверить можно попыткой параллельного проведения двух доков в пустой базе, если в модуле проведения одного из них вставить Предупреждение для остановки транзакции, и следом начать проводить другой док той же базы из соседнего окна 1С. В непатченной 1С загрузка процессора возрастает до 100%, а в патченной остается близкой к нулю.
У меня одного работает отлично. Если под одним пользователем искусственно повесить при проведении, то под вторым тоже подбор работает нормально. Начинает тормозить при 30 пользователях, на поиск уходит 2-10 секунд вместо <1 секунды.
Тестировал утром, посмотрел нагрузку на процессор, на память, жесткий диск, везде всё нормально, но при этом подбор тормозит. Может есть идеи?
Скачал данный дистрибутив. Установил на своем компе: скопировал файлы odbc33.dll,odbc33.ini в папку 1cv77. Запустил patch_bkend.exe.
из папки plugin_sql_77.
При запуске 1С выдается "ошибка инициализации ODBC".
Используется 25 релиз 1С 77. win 7-64 на компе. SQL сервер 2008.
короче не работает :( .... куда копать?
Подскажите, пожалуйста, есть ли решение для Windows 2016 + SQL 2016 (2017)?
Попробовал нынешний патч (положил odbc33.* в папку 1С и заменил ODBC32.DLL -> ODBC33.DLL в файлах bkend.dll и bkend0.dll) - не помогает - ругается при запуске "Ошибка инициализации ODBC!".
Спасибо.
Нашёл решение:
Частично помогло...
По крайней мере, работа начала шевелиться.
vk_sleep = СоздатьОбъект("Addin.vk_sleep_1C");;
vk_sleep.УстановитьПаузуПриБлокировке(1024, "7.7"); // тут норм
vk_sleep.УстановитьПаузуПриБлокировке(1024, "7.7"); // внимание! 1С падает при повторном выполнении на этом операторе
обнаружил вчерась... отлаживая/рефакторя код загрузки компонент ;-)
Вин10, DBF
Ведет себя очень странно
Например, если компоненту не загружать, а сделать просто
Процесс = СоздатьОбъект("Addin.vk_sleep_1C"); // ошибок не дает, Процесс даже какое-то значение имеет Addin.vk_sleep_1C, но при этом
Процесс.УстановитьПаузуПриБлокировке(1024, "7.7"); // даст ошибку
.
а код
ЗагрузитьВнешнююКомпоненту("vk_sleep_1C.dll");
vk_sleep = СоздатьОбъект("Addin.vk_sleep_1C");
vk_sleep.УстановитьПаузуПриБлокировке(1024, "7.7");
при первом исполнении отработает норм
а при повторном
ЗагрузитьВнешнююКомпоненту("vk_sleep_1C.dll");
vk_sleep = СоздатьОбъект("Addin.vk_sleep_1C");;
vk_sleep.УстановитьПаузуПриБлокировке(1024, "7.7");
- 1С тупо падает.
.
и никакого варианта как определить загружена компонента vk_sleep_1C.dll - не нашел...
как определить что vk_sleep_1C.dll уже загружена..?
//{--- загрузка vk_sleep_1C.dll, описание особенностей
//vk_sleep_1C.dll - мутная, поведение при загрузке и применении метода - неадекватное,
// падает при повторном выполнении в сеансе 1С метода УстановитьПаузуПриБлокировке()
// поэтому для исключения повторного выполнения надо убедиться, что ВК уже загружена
// при этом, если ВК не загружена Процесс.СоздатьОбъект("Addin.vk_sleep_1C") - отрабатывает без ошибок,
// но Процесс.КакойТоМетодКомпоненты() - дает ошибку типа Поле агрегатного объекта не обнаружено...
// наличие такой ошибки можно рассматривать как признак того, что ВК не загружена,
// так как повторное исполнение метода УстановитьПаузуПриБлокировке() - приводит к краху 1С, то
// используем другой метод, который не ломает 1С: Процесс.Sleep()
//}--- загрузка vk_sleep_1C.dll, описание особенностей
Процесс = СоздатьОбъект("Addin.vk_sleep_1C");
Попытка Процесс.Sleep(5); // повторное исполнение метода не приводит к краху 1С,
Исключение // используем метод как сигнальный, что компонента не загружена/загружена
ОшибкаОписание = ОписаниеОшибки(); Процесс = ""; // признак, что компонента не загружена
Если Найти(ОшибкаОписание,"Поле агрегатного объекта не обнаружено (Sleep)") = 0
Тогда // контроль ожидаемой ошибки, получили не то что ждали...
Сообщить("загрузка ВК <vk_sleep_1C.dll>, проблема: "+ОшибкаОписание,"!");
КонецЕсли;
КонецПопытки;
Если ПустоеЗначение(Процесс) = 1 Тогда
// компонента не загружена, ЗАГРУЖАЕМ, ВЫПОЛНЯЕМ ДЕЙСТВИЯ ПРИ ПЕРВОНАЧАЛЬНОЙ ЗАГРУЗКЕ
Иначе
// компонента загружена, НЕ ЗАГРУЖАЕМ, ВЫПОЛНЯЕМ/НЕ ВЫПОЛНЯЕМ ДЕЙСТВИЯ ПРИ ПОВТОРНОЙ ЗАГРУЗКЕ
КонецЕсли;
ПоказатьРейтинг: 624
Для получения уведомлений о новых публикациях автора подключите телеграм бот: Инфостарт бот
№ 15367
Создание 13.12.07 14:13
Обновление 18.08.10 14:42
Просмотры 64433
Загрузки 7928
Рейтинг
223
Комментарии 82
Код открыт Не указано
Рубрики HighLoad оптимизация
Кому
Системный администратор
,
Программист
Тип файла Компонента, плагин (dll, vbs,..)
Платформа Платформа 1С v8.3
Конфигурация Не имеет значения
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)