Имя: Пароль:
1C
1C 7.7
v7: 1C++, SQL 2008 R2 - подвисают запросы.. ЧЯДН?
, ,
0 mad hatter
 
09.11.12
19:50
Не могу сказать точно, была ли проблема раньше, не обращал внимание.. SQL 2008 R2, стал замечать непонятные для меня явления.. 1С++ (3.2.2.0) при запросах, по фазе луны, происходят подвисания запроса на sql-сервере.. Запрос один и тот же, крутится в цикле, либо селф, либо к однотипным базам, например первая итерация пролетает мгновенно, на втором и третьем подвисает и далее опять норм.. Подвисает и висит примерно минуту, потом такое впечатление, что вываливается по таймауту, но завершается ОК и данные возвращает, при этом и ЦП-0% и I/O-0%.. Попадает в "длинные запросы".. После ребилдинга индексов все начинает мгновенно летать, но после, даже штатного перезапуска сервера, опять начинаются подвисания до реиндексации..
И памяти и прочего на серваке навалом: 24 Гб, SSD диски, нагрузка - ноль пользователей..
Куда посмотреть, на что обратить внимание?..
1 Ёпрст
 
09.11.12
19:51
хинты то в запросах есть ?
как дружил с 2008 скулем ?
2 mad hatter
 
09.11.12
20:00
(1)
1. Хинтов нет.. и да, посмотрел планы запросов - у зависающих он другой.. Но почему?.. и как влияет на это перезапуск сервера..
2. Самизнаетекак, постаринке )).. Сами клюшки работают без тормозов, а вот выборки из внешних баз "призадумываются"..
3 Evg
 
09.11.12
20:08
выложи хотя бы запрос
4 mad hatter
 
09.11.12
20:17
(3) запросы совершенно разные, вплоть до элементарного SELECT`а в методе "ВыполнитьСкалярный()"..

подключаюсь так:
       Запрос = СоздатьОбъект("ODBCRecordset");
       Запрос.УстБД1С();
5 Evg
 
09.11.12
20:18
те же самы запросы в sql студии отрабатывают нормально ?
6 mad hatter
 
09.11.12
20:27
(5) ..не имею достаточной статистики, но вроде все норм
7 МихаилМ
 
09.11.12
20:43
авто обновление статистики включено ?
8 mad hatter
 
09.11.12
21:12
(7) true.. ))

я стал грешить на R2.. раньше был просто "2008" и жалоб не было..
9 Ёпрст
 
09.11.12
22:32
(nolock) в текстах запроса воткни
10 ADirks
 
12.11.12
06:30
(0) +, Как вариант, попробовать параллелизм отключить. Лично видел, к 1 (один!) запрос с кучкой подзапросов сам себя дедлочит.
11 mad hatter
 
16.11.12
02:21
(9) ноулоки не спасли "атца русской демократии"(с) ))
..но помогли выявить особенность - зависают (дедлоков не выявлено) запросы с инсертами во временную таблицу, содержащие в себе соединения с другой временной таблицей, например:

insert into #qwerty (a,b,c)
select a,b,c
from asd inner join #zxc on(..

OMG!.. собака порылась в tempdb?
как замерить очередь к диску в момент запроса?
12 mad hatter
 
16.11.12
02:22
(10) как отключить параллелизьм?
13 ADirks
 
16.11.12
06:16
можно так
sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
sp_configure 'max degree of parallelism'
sp_configure 'max degree of parallelism', 1
RECONFIGURE WITH OVERRIDE

или в менежмент студио где-то

ещё можно попробовать трассировку отрубить, тоже тормозит
exec sp_configure 'default trace enabled', 0

ещё попробуй глянуть всякие waiting'и, может что скажет
SELECT TOP 10
[Wait type] = wait_type,
[Wait time (s)] = wait_time_ms / 1000,
[% waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0
              / SUM(wait_time_ms) OVER())
FROM sys.dm_os_wait_stats
WHERE wait_type NOT LIKE '%SLEEP%'
ORDER BY wait_time_ms DESC;
14 Z1
 
16.11.12
10:59
(13) дело говорит
(4)Вместо
Запрос = СоздатьОбъект("ODBCRecordset");
       Запрос.УстБД1С();
надо использовать
Запрос = СоздатьОбъект("ODBCRecordset");
Запрос.РежимRPC(1);
------------------
Оператор
Запрос.УстБД1С();
тлт вообще ничего не делает или создает лишнее сооденение к БД какой из этих вариантов работает точно не знаю.
короче УстБД1С если хочешь соедениться с другой sql базой.
-----------------
Может у тебя какие либо регламенты идут обслуживающие базу ( с блокировкой базы)
-----------------
или  неправильно настроены приращения размеров базы в том числе и tempdb
-----------------
про SSD не страшно использовать и еще скажи сколько пользователей одновременно в базе
15 mad hatter
 
16.11.12
14:24
(13) этот параллелизм (sp_configure 'max degree of parallelism', 1) у меня отключен..

(14) пользователей в базе 0(ноль)
SSD диски совсем не страшно, работают уже 3 года пока без проблем, но.. фирмы intel и win2008
16 ЧеловекДуши
 
16.11.12
14:29
(15) А можно поподробнее об Сервере и о SQL а так же о битах 32 и 64, того и другого.
А то чет непонятно :)
17 ADirks
 
16.11.12
14:42
(15) циферка после 'max degree of parallelism' - это макс. количество потоков, которое сервер может выделить на обработку запроса. Если там 0, то это значит, что ограничений нет.
18 mad hatter
 
16.11.12
15:18
(17) у меня там уже давно "циферка 1" )))
19 mad hatter
 
16.11.12
15:20
парни, я кажется близок к разгадке! ))))..

сижу сейчас пилю сиквельный сервис..

возможно скоро выступлю с докладом ))
20 mad hatter
 
16.11.12
15:21
(14) режим Запрос.РежимRPC(1) мне использовать нельзя, запросы напичканы временными таблицами.. да и не в этом дело
21 prog01
 
16.11.12
15:22
(0)кривые руки?
22 mad hatter
 
16.11.12
15:22
(16) биты то тут с какого боку?
23 prog01
 
16.11.12
15:23
если серьезно то нужно смотреть как выполняется запрос и подзапросы в скулях

и сравнивать с тем что транслирует ваша приблуда

и всё будет ясно
24 mad hatter
 
16.11.12
15:23
(21) отгатка скоро.. следите за темой! ))))
25 Никола_
Питерский
 
16.11.12
15:25
(24) Очень следим.
26 mad hatter
 
16.11.12
18:48
тащемта, камлание и битье головой ап стену принесли свои плоды, например.. ))

дело было в следующем:
заметил, что при подвисании запроса, неразумно растет очередь к дискам, где база или темпдб лежат.. но при этом ввод/вывод - 0%, ничего не пишет не читает.. и тут осенило..
некоторое время назад были проблемы с электричеством, компупер по ночам вырубался, пока разбирались что к чему, я на всякий случай убрал галочку в свойствах SSD дисков (в диспетчере устройств) "Отключить очистку буфера кеша записей Виндоус для этого устройства".. вернул галочки и усе заработало ))..
видимо имеем дело со сложным глюком, возникающим при определенном стечении обстоятельств - алгоритм работы контроллера SSD диска с флеш памятью + алгоритм работы кэша диска + SATA контроллер/драйверы + работа SQL c дисками.. дальше разбираться не стал.. возможно с другими дисками и на другом оборудовании ничего подобного не будет
27 mad hatter
 
16.11.12
18:58
..а может просто уже диску с темпдб хана и он настолько деградировал, что минуту строит таблицу годных ячеек на запись))
28 mad hatter
 
16.11.12
18:59
..а может виноват TRIM происходящий не вовремя.. хз))
29 lift
 
18.11.12
16:52
экспериментаторы епт, ну давай скрещивай 1С 7.7 с SQL 2012