Книга знаний

1С:Предприятие / Администрирование / Производительность

Исправление ошибки 1С:Предприятие 7.7/8.0 - 100% загрузка процессора при ожидании блокировки

При работе 1С (7.7, 25 релиз, 8.0, 8.0.12.21) наблюдается неоправданная загрузка центрального процессора при ожидании захвата таблиц. Приведенная по ссылке разработка (DLL+патч) позволяет вставить вызов sleep() между последовательными опросами блокировки, и ликвидировать "торможение" в многопользовательской среде 1С (это особенно актуально при работе в режиме сервера терминалов).Автор статьи: romix | Редакторы: Мастер1С,
Последняя редакция №6 от 21.06.07 | История
URL: http://kb.mista.ru/article.php?id=179

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


Разработка для скачивания


http://x-romix.narod.ru/vk_TerminalSleep.rar
Скачивать ЛЕВОЙ кнопкой мыши, ~237 К

Цель использования: разгрузить процессор, когда два или более пользователей пытаются провести документ. 1С пытается заблокировать таблицы, но делает это без пауз, и загружает процессор на 100%. При этом пользователи практически "встают", и нормальная работа прекращается. Компонента позволяет решить эту проблему и нормализовать работу пользователей.

Принцип работы: вставляет в цикл ожидания захвата таблиц системный вызов sleep.

Установка различается для версий DBF 7.7, SQL 7.7 и 1С 8.0, описана в readme.txt.

Отмена действия компоненты - выставить в INI-файле паузу = 0, выйти и войти в 1С.

Деинсталляция компоненты - восстановить папку BIN из резервной копии.

Исходный код (компилятор - Delphi 6) прилагается.

Нужен ли патч для 8.0 SQL?


Нет, там эта проблема не существует.

Как узнать, что проблема решена


Вставьте в модуль проведения Предупреждение(), чтобы остановить проведение. Начните (из другой копии 1С) проводить другой документ. 1С с ошибкой станет загружать процессор на 100% пустым циклом ожидания, тогда как 1С без ошибки (или с установленным исправлением) грузить процессор не будет.
Я начал свою разработку именно с этой проверки.

Проблема с клиентами Windows 98


Выяснилось что ошибка ("Ошибка инициализации ODBC") возникает при запуске 1С  на некоторых Windows 98 клиентах. Решилось все установкой на них Microsoft  Data Access Components 2.8. (сообщил Vadim Stepanov).


Другие возможные решения



ВК Приоритет
Автор: Александр Орефков
http://openconf.itland.ru/vk/prior/

multex_1c
Автор: Z1
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=78&lid=2836


Ветка обсуждения


Решение проблемы 100% загрузки процессора при ожидании транзакции (ВК+перехват DLL)


Несколько положительных отзывов


orefkov
26- 11.04.06-08:45(25)
Более грамотное решение.

ø    VitGun
146 - 10.04.06 - 12:02
«   х    
Отлично!! В ГМ прописал. Поставил УстановитьПаузуПриБлокировке(10). У юзеров Время ожидания=15. По словам бухов скорость на 50% выросла. 100% загрузки проца есть, но на 1 секунду - не больше(слабое железо), а раньше кто-нибудь проводит док - все висят...причем минуты 2-3...

ø    pvase
218 - 12.04.06 - 13:55
«   х    romix - Большой СЕНКС, действительно рулит под SQL.

ø    zenik
254 - 15.04.06 - 12:31
«   х    
(254) Результы теста: 2-х головый XEON 2.0, 8 гиг ОЗУ, SQL DE, Win2003 EE.
До патчинга скачек при блокировке транзакции до +40% (у сервака еще своя боевая нагрузка была). После патчинга... Скачков при блокировке небыло вообще. Delay оставил по умолчанию - 1000. Тест провел 3 раза. Каждый раз получая одинаковые результры.

Огромный респект автору.

ø    Вильям
311 - 19.04.06 - 14:18

Ромикс! Спасибо! SQL - летает...    310

«   х    
(310) Ну да, операторы теперь не тормозят, когда проводят документов кучу...
312

ø    Вильям
313 - 19.04.06 - 15:28
«   х    
(312) Пользователей - порядка 30, активных - человек 10. Операторы, когда набивали заказы, расходы - загружали весь процессор, сидели в ожидании и "нервно курили (с)". Теперь - тормозов нет. Еще раз спасибо.    314


ø    Maniac
Модератор
343 - 22.04.06 - 14:32
«   х    
Рома, огромный тебе респект. Все работает на ура!!! У меня база 6 гиг на трех терминал-серверах. 50 юзеров. 17 регистров накопления. В последнее время вопрос о транзакциях стал особенно актуальным. Сейчас касса говорит что "не успевает работать за программой" )) Гыыы. Кросавчег!!!!    346


MIK
124- 15.04.06-01:55 romix, ты молодец! Будешь в Киеве, с меня литр пива с трубочками ☺


Другие разработки с данной функциональностью


Книга знаний: Перехват API-вызовов и альтернативные плагины для 1С:Предприятие
(DBF - реализация без внешней компоненты)
Книга знаний: Множественный отбор в журналах и справочниках 7.7 заменой запросов SQL
(SQL - внешняя компонента)

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2024 | Mista.ru

Яндекс.Метрика