Имя: Пароль:
1C
 
v7: Долбанные deadlock-и SQL-сервер
0 VanDiesel
 
22.02.07
11:18
С недавнего времени стали одолевать наших пользователей ошибки в плане взаимных блокировок. Установили что характер их появления чаще всего мотивирован работой с периодическими реквизитами справочника номенклатуры. Чаще всего это работа с документом ФормированиеОтпускныхЦен (конфа самописная). Так вот проглядел модуль обработки этого документ - и ничего криминального там не обнаружил. Рядовые записи в спр. Цены подчинённый номенклатуре и простое обновление период. реквизита
УстановитьРеквизитСправочника(Спр.ТекущийЭлемент(),"Цена",Цена2,ДатаДок);
Вообщем у меня вариант появления этих деадлоков такой. Спр номенклатура - один из наиболее часто используемых везде. Сиквель сервер в силу своей заторможенности (с базой работает одновременно человек 60)не поспевает обработать многочисленные запросы...
В общем вопрос у меня один - можно как-то бороться с данной проблемой из 1С? Просто не вижу в модулях на которых наиболее часто возникает эти проблемы ничего такого что подвергало большой нагрузке сервер. Либо всё это головняки нашего сис-админа?
1 ТелепатБот
 
гуру
22.02.07
11:18
2 Иде я
 
22.02.07
11:21
У нас 80 человек оналайн и нормально.
Какой у вас сервак ?
3 Иде я
 
22.02.07
11:21
Нормально - иной раз блокировки идут, но это если проводится документ долго. Типа закрытия месяца и тп.
4 romix
 
22.02.07
11:21
5 Матрейя
 
22.02.07
11:23
на www.itpb.ru/forum4 есть методика. Юзай поиск.
6 masky
 
22.02.07
11:49
посмотри граф дедлока в логах
7 VanDiesel
 
22.02.07
11:50
(4) Естественно :)
8 VanDiesel
 
22.02.07
11:55
(6) незнаю - просто вижу из этой инфы что они есть и примерный характер возникновения. Может вы обнаружите в них что-нибудь эдакое
2007-02-02 13:04:12.96 spid4    
2007-02-02 13:04:12.96 spid4     Wait-for graph
2007-02-02 13:04:12.96 spid4    
2007-02-02 13:04:12.96 spid4     Node:1
2007-02-02 13:04:12.96 spid4     TAB: 9:1914840467 []           CleanCnt:2 Mode: X Flags: 0x0
2007-02-02 13:04:12.96 spid4      Grant List 1::
2007-02-02 13:04:12.96 spid4      Grant List 2::
2007-02-02 13:04:12.96 spid4      Grant List 3::
2007-02-02 13:04:12.96 spid4        Owner:0x3c87c800 Mode: X        Flg:0x0 Ref:1 Life:02000000 SPID:172 ECID:0
2007-02-02 13:04:12.96 spid4        SPID: 172 ECID: 0 Statement Type: INSERT Line #: 1
2007-02-02 13:04:12.96 spid4        Input Buf: RPC Event: sp_executesql;1
2007-02-02 13:04:12.96 spid4      Requested By:
2007-02-02 13:04:12.96 spid4        ResType:LockOwner Stype:'OR' Mode: IS SPID:78 ECID:0 Ec:(0x7A9F94E0) Value:0x5068f440 Cost:(0/0)
2007-02-02 13:04:12.96 spid4    
2007-02-02 13:04:12.96 spid4     Node:2
2007-02-02 13:04:12.96 spid4     TAB: 9:211674185 []            CleanCnt:1 Mode: S Flags: 0x0
2007-02-02 13:04:12.96 spid4      Grant List 3::
2007-02-02 13:04:12.96 spid4        Owner:0x503f24c0 Mode: S        Flg:0x0 Ref:2 Life:02000000 SPID:56 ECID:0
2007-02-02 13:04:12.96 spid4        SPID: 56 ECID: 0 Statement Type: SELECT Line #: 2
2007-02-02 13:04:12.96 spid4        Input Buf: RPC Event: _1sp_SC156_TLock;1
2007-02-02 13:04:12.96 spid4      Requested By:
2007-02-02 13:04:12.96 spid4        ResType:LockOwner Stype:'OR' Mode: IX SPID:172 ECID:0 Ec:(0x7517B4E8) Value:0x5c838920 Cost:(0/F10)
2007-02-02 13:04:12.96 spid4    
2007-02-02 13:04:12.96 spid4     Node:3
2007-02-02 13:04:12.96 spid4     TAB: 9:1914840467 []           CleanCnt:2 Mode: X Flags: 0x0
2007-02-02 13:04:12.96 spid4      Convert List:
2007-02-02 13:04:12.96 spid4        Owner:0x5068f440 Mode: IS       Flg:0x2 Ref:1 Life:00000000 SPID:78 ECID:0
2007-02-02 13:04:12.96 spid4        SPID: 78 ECID: 0 Statement Type: EXECUTE Line #: 1
2007-02-02 13:04:12.96 spid4        Input Buf: RPC Event: sp_cursorfetch;1
2007-02-02 13:04:12.96 spid4      Requested By:
2007-02-02 13:04:12.96 spid4        ResType:LockOwner Stype:'OR' Mode: S SPID:56 ECID:0 Ec:(0x409F54E0) Value:0x1cbe15c0 Cost:(0/3A8)
2007-02-02 13:04:12.96 spid4     Victim Resource Owner:
2007-02-02 13:04:12.96 spid4      ResType:LockOwner Stype:'OR' Mode: IS SPID:78 ECID:0 Ec:(0x7A9F94E0) Value:0x5068f440 Cost:(0/0)
2007-02-02 13:04:17.98 spid4
9 VanDiesel
 
22.02.07
12:00
10 romix
 
22.02.07
12:01
(7) А еще что стоит? Юзается ли УРБД?
11 dk
 
22.02.07
12:04
Немного странно смотрится "ТекущийЭлемент()" в
"УстановитьРеквизитСправочника(Спр.ТекущийЭлемент(),"Цена",Цена2,ДатаДок);"
Там вроде можно кинуть просто ссылку, без поиска объекта. Хотя ...
12 VanDiesel
 
22.02.07
12:06
(2) У нас тут часть пользователей работают локально с базой часть висят в терминальных сессиях. Параметры SQL-сервера такие
2*2.8 гГц Xeon 3Гб оперативки Raid 1 - винты сказевые 4*73 Гб - зеркало 2 на 2
13 VanDiesel
 
22.02.07
12:10
(11) Опа - ща пригляделся - вообще изменений никаких в самой номенклатуре не происходят - все в подчиненном ей справочнике Цены. Тогда мне вообще малопонятно - т.к. пара взаимной блокировки в 80-90% случаев это номенклатура...
14 VanDiesel
 
22.02.07
12:25
(10) УРБД установлена (хз до меня дело было) но не юзается...
15 France
 
22.02.07
13:19
ответ, на самом деле, во фразе - "Установили что характер их появления чаще всего мотивирован работой с периодическими реквизитами справочника номенклатуры"..
общеизвестный факт, что периодические реквизиты для всех объектов хранятся в таблице _1Sconst - вот и возникает постоянные блокировки онной таблицы...
16 romix
 
22.02.07
13:25
(14) Другие улучшения кроме патча (4) стоят?
17 masky
 
22.02.07
13:27
Выставь флаг отладки 3406. В этом случае вся дополнительная информация будет сбрасываться в файл errorlog, который по умолчанию находится в каталоге LOG директории SQL сервера. там и посмотришь.. и нам покажешь
18 masky
 
22.02.07
13:28
поставь куда нить типа приНачалеРаботы: DBCC TRACEON(1204, 3406, -1)
19 France
 
22.02.07
13:30
(17) нафига, если они и так знаю, в чем дело?..
20 masky
 
22.02.07
13:33
ты так думаешь?
21 masky
 
22.02.07
13:35
"Сиквель сервер в силу своей заторможенности (с базой работает одновременно человек 60)не поспевает обработать многочисленные запросы... "
бред
Deadlocking
A deadlock occurs when there is a cyclic dependency between two or more threads for some set of resources.

Deadlock is a condition that can occur on any system with multiple threads, not just on a relational database management system. A thread in a multi-threaded system may acquire one or more resources (for example, locks). If the resource being acquired is currently owned by another thread, the first thread may have to wait for the owning thread to release the target resource. The waiting thread is said to have a dependency on the owning thread for that particular resource.
22 France
 
22.02.07
14:16
(21) спасибо за курс ликбеза, жаль, что объект неверно выбран))
23 VanDiesel
 
01.03.07
11:55
(21) То КАК возникают эти дедлоки я итак прекрасно знаю. А вот ПОЧЕМУ их не было и вдруг они начали колупать нам моск это нипонятно.
(16) Ну всех неупомню но есть еще замененный seven.dll (если не путаю его меняли для изменения сохранения xls файлов) ну еще парочка которых добавляли уже после того как эта проблема начала нас доставать...
24 VanDiesel
 
01.03.07
11:57
(17) Все это уже есть - я даже привел пример из этого файла в посте (8)
25 VanDiesel
 
07.03.07
08:51
апну штоле...
26 megalodon
 
07.03.07
08:52
наловить дедлоков в 7-ке это надо талант иметь :-)
27 megalodon
 
07.03.07
08:57
в общем посоветовать могу вот чего: ставь профилер на события "Deadlock" и "Deadlock Chain" и гляди на каких таблицах сие возникает. Потом гляди в конфе извратные участки кода, которые пишут в эти таблицы чего нить, ну например транзакция открывается где нить в ПриЗаписи а заканчивается в ОбработкаПроведения.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс