Имя: Пароль:
1C
Админ
Тормоза на SQL
0 AlexNecro
 
22.05.09
06:22
Два сервера, MSSQL (4ядра) и Citrix(8 ядер), журнал документов блокируется (новый()/записать() не работает) и вообще всё тормозит, при этом на сервер терминалов пользователи, пытающиеся произвести запись загружают как раз по ядру. Если только один записывает, тоже загружается ядро целиком и запись обламывается по таймауту;
в это время SQL загружает до трех ядер, то есть, на нем, очевидно, выполняются какие-то толстые запросы (в конфе используется много SQL запросов).

Собственно, вопрос: как определить, какими именно запросами его так скручивает?
1 ТелепатБот
 
гуру
22.05.09
06:22
2 Восточный Парень
 
22.05.09
06:27
Profiler юзай.
3 los_hooliganos
 
22.05.09
06:43
Версию sql укажи.
4 AlexNecro
 
22.05.09
07:07
2000sp4, Win2003EE
5 AlexNecro
 
22.05.09
07:08
1cv77r27
6 AlexNecro
 
22.05.09
07:08
(2) ну открыл я его и смотрю, и вижу фигу, типа того
7 Mikeware
 
22.05.09
07:10
Дежавю
8 Sadovnikov
 
22.05.09
07:12
(0) "в конфе используется много SQL запросов" - а позвать того, кто писал эти запросы?
9 Нуф-Нуф
 
22.05.09
07:13
(7) уже был в такой ветке?
10 povar
 
22.05.09
07:14
это матрица
11 Mikeware
 
22.05.09
07:15
(9) Регулярно.
Такие ветки возникают с завидным постоянством.
Вместо того, чтоб читать учебники - народ лезет в "мизду-лучший отладчик"™
12 los_hooliganos
 
22.05.09
07:19
Похоже на проблему с временными таблицами. Если reconnectnative не поможет, то надо смотреть на запросы.
13 VladZ
 
22.05.09
07:22
(11) "Думать некогда - надо работать!"  (с)
14 Mikeware
 
22.05.09
07:30
(12) Вряд ли.
15 Повелитель
 
22.05.09
07:51
Ветку не читал, отвечаю сразу на вопрос "Тормоза на SQL":
- Тормозов к SQL не подпускайте!!!
16 AlexNecro
 
22.05.09
09:54
Хотелось бы чтоб оно сидело и ловило запросы, выполнение которых заняло много времени, или загрузило процессор, или съело памяти, что-то такое
17 Sadovnikov
 
22.05.09
09:57
(16) Тебе еще в (2) правильный ответ дали.
18 vde69
 
22.05.09
10:02
19 AlexNecro
 
18.06.09
08:20
С тормозами дело кончилось (вернее, продолжилось) тем, что нашлись блокирующие отчеты, которые и были переписаны. Тормоза, однако, остались столь же дикими, хоть и без блокировок.
Кроме этого, любимая программа придумала новую фишку: при проведении очень часто вываливается с ошибкой
"SQL State: 24000 Native: 0 Message: [Microsoft] [ODBC SQL Server Driver] Invalid cursor state"
в инете так и не нашел такую ошибку в таком месте, не знаю, что и думать.
часто (но не всегда) перед этой ошибкой возникает таймаут лил дедлок, жмешь "повторить" - валится

Может, теперь какие-нибудь предположения есть?
dbcc ошибок не выдает, размер около 7Гб (меньше пяти лет), пользователей около 50, документы проводят около 10
20 МуМу
 
18.06.09
09:04
http://www.softpoint.ru/info_id99.htm
Это касается того как узнать что и почему тормозит для 7-ки и 8-ки.
21 AlexNecro
 
18.06.09
09:07
Зачем множить  сущности? может просто какую-то конкретную фигню в PerfMon или еще где глянуть?
22 Mikeware
 
18.06.09
09:10
(19) Что говорит товарищ профайлер? Что говорит скрипт от vde69?
23 Mikeware
 
18.06.09
09:12
(21) глянь деньги в кармане шефа, и попроси его нанять специалиста....
24 AlexNecro
 
18.06.09
09:21
(22) что еще за скрипт? что я пропустил?
25 vde69
 
18.06.09
09:25
(22)+ http://www.infostart.ru/projects/2831/

кстати я тут придумал прикольную систему оптимизации скорости.
А именно перенос всех вычеслительных процессов на клиенты, но при этом исключение блокировок. Причем все ШТАТНЫМИ средствами, хотя переписывать довольно много :)

Детали расписывать не буду, просто представьте, что 1с будет блочить таблицы только для записи готовых результатов в регистры и при этом удасться избежать "грязного" чтения... и все ШТАТНО :)
26 vde69
 
18.06.09
09:27
(24) ты-бы читал, ссылки которые тебе советуют, паример (18)
27 AlexNecro
 
18.06.09
09:27
(25) Не, не пойдет, я не могу переписать с SQL на 1С, это ужас какой-то
28 vde69
 
18.06.09
09:30
(27) мда... это вообщет-то к 1с вообще никаким боком не относится, это для оптимизации ЛЮБЫХ приложений использующих SQL.

просто отдай эту ссылку админам которые с SQL сервером разбираються
29 Fragster
 
гуру
18.06.09
09:31
30 Mikeware
 
18.06.09
09:38
(22) имxyецца, дурь полная. работать должен сервер, а не клиенты.
Ну и насчет "штатных" - дык и садовников делает "штатно" :-)
31 AlexNecro
 
18.06.09
09:39
(28) я про нагрузку клиентов а не про ссылку, ссылку скачал.
32 vde69
 
18.06.09
09:45
(30) это ты говоришь, по тому как клиенты всегда медленее и тормозят все блокировками, а я предлогаю систему распределеных вычеслений.

кстати я тут у нас попробую реализовать :)
33 Mikeware
 
18.06.09
10:05
(32) Я примерно представляю то, что ты задумал. Потому и говорю. Хотя, могу и ошибаться...
34 AlexNecro
 
18.06.09
10:22
Что-то я не понимаю, чем это может помочь:
***total***    3001.0    100.0
WRITELOG    1657.0    55.2
LCK_M_X    531.0    17.7
LCK_M_S    281.0    9.4
LOGBUFFER    219.0    7.3
PAGELATCH_EX    186.0    6.2
LATCH_UP    94.0    3.1
PAGELATCH_SH    32.0    1.1
35 ДенисЧ
 
18.06.09
10:27
(34) идёшь в BOL и читаешь, что значат эти грубые слова...
36 vde69
 
18.06.09
10:37
(34)
1. твой тест слишком короткий, по тому не очень показательный
2. даже на нем явно видно, что поставив еще один винт в сервак и перенеся на него файл лога ты значительно улучшишь систему
37 Fragster
 
гуру
18.06.09
10:39
(36) а может просто recovery model в simple установить?
38 vde69
 
18.06.09
10:42
(37) не поможет...

кстати подобная цифра (и отсутствие времени записи базы), говорит о том что идет очень много мелких селектов! скорее всего это вывод переодических реквизитов в колонку журнала, или подобное... Но винт все равно нужен!
39 AlexNecro
 
18.06.09
10:49
Извиняйте, это я пока свой комп мучаю, сейчас вот четыре Ски запустил, две с пакетным проведением, одну с удалением помеченных, одну с ОСВ по расчетам. Просто, посмотреть.
40 AlexNecro
 
18.06.09
10:51
А модель у меня и так симпл, прям не знаю, откуда журнал взялся
41 AlexNecro
 
18.06.09
10:53
Но вот что странно, загрузка проца складывается из двух 1Сок (видимо, которые проводят), примерно по 40% и почти 20% SQLServer,yа остальные две Ски совсем мало
42 vde69
 
18.06.09
11:01
AlexNecro - тесты делай НА РАБОЧЕЙ базе в РАБОЧЕЕ ВРЕМЯ,

по другому это смысла не имеет вообще! ибо основные затыки обычно в сети лежат :)
43 vde69
 
18.06.09
11:04
а вообще соглашусь, что проще спеца нанять, если контора большая МуМу
если не очень можешь мне отмылить.

на сим отваливаю, (смысла давать советы если их не слушают я не вижу)
44 AlexNecro
 
18.06.09
11:05
В сети? А при этом может быть, чтобы на обоих концах провода (SQL vs TS) нагрузка была небольшая, а тормоза - дикие?
45 AlexNecro
 
18.06.09
11:05
на рабочей завтра утром запущу
46 vde69
 
18.06.09
11:16
>>В сети? А при этом может быть, чтобы на обоих концах провода (SQL vs TS)
>>нагрузка была небольшая, а тормоза - дикие?



AlexNecro
Род занятий: программист/админ
Стаж: 3 г. 2 мес.  

мда...
47 AlexNecro
 
18.06.09
11:20
Что - "мда"? Я рад, если у тебя получается в чем-то разобраться а не налепить заплаток и схватиться за другое. У меня - не получается, что поделаешь.
48 trdm
 
18.06.09
11:20
(13) "Думать нечем - надо работать" (c)???
49 AlexNecro
 
18.06.09
11:23
(48) точно, дожил до старости и так и не научился думать одновременно о тормозах, бэкапах, мобильной торговле, ЕНВД, себестоимости, о том, куда всунуть ИП, через которого будем торговать и как правильно разделить сумму по договору.
ну как-то не получается.
50 vde69
 
18.06.09
11:32
(47) это значит или контора гнилая или спец из тебя никакой.

запарки конечно бывают у всех и заплатки надо уметь быстро ставить, но ВСЕГДА их потом переводить на нормальное решение.

(49) а зачем ты всем занимаешься? не правильно это! (ну и про старость - насмешил), К слову сказать у меня сейчас 7 доменов (3 физически удаленных), около 100 баз, примерно 150 активных пользователей, 8 различных конфигураций (включая производство и розницу) и на все это нас 2 чела (+ админы которые в 1с не лезут) и хватает время на все :)
51 AlexNecro
 
18.06.09
11:35
(50) фиг знает, исторически так сложилось...

но вопрос-то в целом был про ошибку
SQL State: 24000 Native: 0 Message: [Microsoft] [ODBC SQL Server Driver] Invalid cursor state
с которой валится база, и про которую я прочитал только что так бывает, когда на одном наборе открываются одновременно курсоры разных типов... вот и при чем тут 1С?..
52 toypaul
 
гуру
18.06.09
12:01
в SQL Profiler есть поле Duration. Поставь по нему фильтр больше определенного значения (я уже не помню точно в чем там измеряется). В результате получишь "толстые" запросы.
53 toypaul
 
гуру
18.06.09
12:02
там же в профайлере можно поставить фильтр на события блокировок.
54 AlexNecro
 
19.06.09
04:26
на рабочей базе:
***total***    12529141.0    100.0
CXPACKET    4390680.0    35.0
LCK_M_X    2037845.0    16.3
LCK_M_U    1706392.0    13.6
LCK_M_S    1247103.0    10.0
LCK_M_IS    1057612.0    8.4
LATCH_EX    907592.0    7.2
PAGEIOLATCH_SH    537609.0    4.3
WRITELOG    422002.0    3.4
PAGEIOLATCH_EX    76979.0    .6
LCK_M_IX    40623.0    .3
IO_COMPLETION    28866.0    .2
NETWORKIO    24831.0    .2
PAGELATCH_EX    23168.0    .2
PAGELATCH_SH    11184.0    .1
PAGELATCH_UP    5124.0    .0
55 AlexNecro
 
19.06.09
04:27
"CXPACKET
Имеет место при попытке синхронизации итератора обмена обработчика запросов. Можно попытаться снизить степень параллелизма, если конфликты такого типа становятся проблемой."

надо maxdop поставить 1?
56 AlexNecro
 
19.06.09
06:37
По сравнению с моим компом, где основная нагрузка
WRITELOG 55.2 и LCK_x 27.1
на сервере
CXPACKET 35.0 и LCK_x 48.3

maxdop=1 поставил, лучше не стало. очевидно, косяки где-то в памяти или, скорее, в дисках?
57 Mikeware
 
19.06.09
07:12
надо ставить max_degree_of_parallelism=1
58 AlexNecro
 
22.06.09
09:11
Вот в общем результат с отключенным параллелизмом:

***total***    10605725.0    100.0
LCK_M_X    3258265.0    30.7
LCK_M_IS    2050078.0    19.3
LCK_M_U    1880132.0    17.7
LCK_M_S    1853959.0    17.5
WRITELOG    755018.0    7.1
PAGEIOLATCH_SH    539443.0    5.1

совершенно ожидаемо большую часть времени занимают блокировки. Я так понимаю, это диски и память.
но всё равно это ни разу не объясняет
SQL State: 24000 Native: 0 Message: [Microsoft] [ODBC SQL Server Driver] Invalid cursor state
59 vde69
 
22.06.09
09:28
LCK_M_X
Имеет место, когда задача ожидает получения блокировки на монопольный доступ. Матрицу совместимости блокировок см. в представлении

LCK_M_IS
Имеет место, когда задача ожидает получения блокировки с намерением коллективного доступа (IS). Матрицу совместимости блокировок см. в

однозначно, что дело в кривом коде! Хорошо то, что в принцепе пока железо менять не надо и настраивать ничего в скуле.

есть 3 для возникновения такой ситуации
1. слишком громозкие документы(или модуль проведения), тут можно обойтись средствами замера производительности 1с.
2. много "левых" запросов без транкзации, например вычисляемые колонки для журналов
3. не правильная структура/порядок наложения блокировок в транкзациях

для п. 2 надо использовать профайлер
для п. 3 надо смотреть код, обьяснить, что делать сложно.
по п.1 начни с того, что получи время проведения 100 документов ночью в монопольном режиме и днем в рабочем, и запости сюда.
60 vde69
 
22.06.09
09:29
(58) диски и память - нормально вроде...
61 vde69
 
22.06.09
09:30
(58)+ посмотри дедлоки, что-то кажется, что они у тебя явно есть (хотя и не очень много)
62 leshikkam
 
22.06.09
09:31
Я вот одного не могу понять - почему никто не предлагает посмотреть состояние фрагментации индексов и уточнить а обновлялась ли статистика...
63 vde69
 
22.06.09
09:35
(62) по тому, что у него ожидания блокировок бешеные, а к индексам это довольно слабое имеет отношение. Конечно можно планы запросов попробовать по новому перестроить (через обновление статистики), но это вторично, это может дать 20% прироста общей скорости (а у него цп не загружен и так).

Да и ошибка о курсорах - то-же о многом говорит.
64 leshikkam
 
22.06.09
09:37
(63) ну так ожидания блокировок связаны с длительным проведением, которое вызвано неправильным планом выполнения запросов при проведении документов.
По моему старо как мир как мир не ново...
65 AlexNecro
 
22.06.09
09:47
(62) Куда смотреть?
66 Fragster
 
гуру
22.06.09
09:51
кстати, если терминал, то (29) используется? а то любое проведение замедляется..
67 vde69
 
22.06.09
10:19
(64) выполнение тяжелых/неправильных запросов грузит ЦП SQL сервера, а у него он просто отдыхает :) тут скорее всего не правильная очередь мелких запросов...

хотя статистику можно и обновить
68 AlexNecro
 
22.06.09
12:13
(63) Ошибка в курсорах говорит о чем? Скажите уже кто-нибудь? Мне она говорит только о том, что видимо заряд электрона изменился и теперь в нашем мире может действовать заклинание фаерболл :(
69 vde69
 
22.06.09
12:24
(68)

http://1c-esse.buter.ru/faq.php?pg=3#_18
При старте 1С, или при попытке открытия конфигурации выдается сообщение "SQL State: 24000 Native: 0 Message: [Microsoft] [ODBC SQL Server Driver] Invalid cursor state"    Такое сообщение в моей практике встречалось при попытке подключиться к базе SQL под логином, отличным от владельца (DB OWNER). Надо или поменять имя пользователя в настройках Параметры базы данных SQL, или поменять владельца базы (пункт 8). Также такое собщение может появлятся при некорректном завршении предыдущего монопольного подключения (например в момент реструктуризации базы), в таком случае обычно помогает restart SQL сервера.

или это проблеммы с монопольным доступом, или кривой драйвер/патчДрайвера.
70 vde69
 
22.06.09
12:26
(69) кстати при патче Ромикса замечал, что иногда тормоза РЕЗКО возрастают, помогает перезагрузка клиентов.
71 lift
 
22.06.09
13:00
Да дидлок это жуть! Тащи того кто запросы клепал
72 AlexNecro
 
22.06.09
13:07
Да при проведении запросы 1Сные, в конфе ни одного рукописного update/insert, только selectы...
73 vde69
 
22.06.09
13:11
(72) при проведение открываеться транкзация и любой селект накладывае блокировку как минимум не весь свой результат, по этому если в модуле проведения выполнить запрос который вернет 100 ссылок на документы, то все эти документы будут заблокированы до окончания транкзации/проведения, это сделано для избежания грязного чтения....

дальше надо говорить к чему это ведет?

тоесть 1 запрос может завесить всю систему...
74 kiruha
 
22.06.09
13:14
А, похоже в модуле запросы наклепали...

И кстати если нет попадания в индекс - всю таблицу приходится читать.

Автор - в модуле создаются объекты Запрос ?
75 Mikeware
 
22.06.09
13:14
(73) С чего это вдруг?
76 leshikkam
 
22.06.09
13:15
(73) форменный бред
77 AlexNecro
 
22.06.09
13:17
Я в курсе, что два документа одновременно не могут проводится, вопрос не про таймаут, а про invalid cursor state, он-то откуда взялся?
78 AlexNecro
 
22.06.09
13:18
Ну у меня в общем только одна мысль: пересадить базу на сервер терминалов и посмотреть что будет. Но, к сожалению, даже если делать детач/аттач это займет полчаса в одну сторону. А ведь может стать хуже.
79 leshikkam
 
22.06.09
13:22
(78) мысль неудачная :-)
Я думаю стоит посмотреть где у тебя в процедурах SQL самописных или своих функциях не установлено
SET NOCOUNT ON
80 Mikeware
 
22.06.09
13:22
(77) Так какой курсор-то? посмотри в профайлере при ошибке...
И уже по этому будешь делать выводы...
81 Mikeware
 
22.06.09
13:24
(79) Опа-на... А у меня нигде не установлено....
чем это грозит? (извиняюсь за ламерский вопрос)
82 leshikkam
 
22.06.09
13:26
http://www.sql.ru/forum/actualthread.aspx?tid=150302&hl=invalid+cursor+state
это обусловлено особенностью ODBC - возвращать последний результат. По ссылке подробнее описано
83 AlexNecro
 
22.06.09
13:38
(80) это как, запустить профайлер и ждать, пока появится ошибка, или там фильтры такого рода есть?
84 smaharbA
 
22.06.09
13:42
А чо МуМу все игнорируют ? он ведь на халяву предлагает
85 AlexNecro
 
22.06.09
13:43
(84) А то мне своих глюков мало )
86 Попытка1С
 
22.06.09
13:44
(84) Я так понимаю это только для МСК.
87 smaharbA
 
22.06.09
13:45
(86) наверное, но раз халява, может могут выслать комплект и инструкции, но это у него надо спрашивать или звонить
88 Mikeware
 
22.06.09
13:48
(84) Я послал анкету. Пока тишина (пришло только уведомление о прочтении). Видимо, я неперспективный клиент. :-)
89 vde69
 
22.06.09
13:52
(87)(88) на сколько я понимаю их интересуют только "Крупные", самому разобраться с их продуктом без определенных знаний - нельзя а имея эти знания все можно и без этого волшебного продукта сделать (вопрос в удобстве, а из функционала у них только то прикольно, что во все SQL запросы дописываеться коменты от куда это вызвано, правда не понятно на сколько это лицензионно, ведь наверняка это подмена системных DLL).
90 МуМу
 
22.06.09
17:55
То 88. На днях ответят. Без минимальной проверки дейтсвительно отправляться не будет комплект. Потому как с продуктом идет какое то время поддержки и обучения. И выделять это время забесплатно для тех кто просто из любопытства хочет покрутить(в частном порядке) неправильно.  В идеале это те компании у которых возникали или могут возникнуть проблемы производительности.  Тогда в результате вы бесплатно получите какие либо советы об узких местах, поймете насколько оправдано использование у вас этой системы.
То 89. Крупный понятие относительное. Бывает так что компания средняя но проблемы серьезные а с помощью продукта решить проблемы можно. Тогда цель оправдывает средства. Разобраться с продуктом можно и использовать тоже. Насчет того насколько можно всю информацию получить самостоятельно то уверяю - иногда на это надо потратить много времени а также обладать выской квалификацией и опытом в решении подобных проблем. В дальнейшем там же на сайте будут выложены кейсы показывающие в каких случаях просто стандартных АПИ мониторинга не хватает.
91 vde69
 
22.06.09
18:02
(90) я не спорю, у Вас удобно и красиво, а вот с точки зрения финансов я не знаю :), вероятно финансы это и есть порог вхождения...

есть прямой вопрос:
Ваше решение добавляет коменты во все запросы, а на сколько это лицензионно? ведь на сколько я понимаю должены изменятся файлы платформы или драйвера?

если Вы приведете ссылки на информационные материалы по этой проблемме будет вообще замечательно!

вопрос не празный, тут очень много было дебатов на подобные решения...
92 Попытка1С
 
22.06.09
18:03
(91) ага, сейчас тебе все секреты и расскажут...
93 Mikeware
 
22.06.09
18:24
(90) Ждем. Ваши решения известны "в узком кругу ограниченных людей" как безусловно качественные, но и достаточно (по немосковским меркам) дорогие. ПОэтому вопрос о приобретении пока не стоит, а вот возможность проверить свои способности весьма интересен...
94 AlexNecro
 
24.06.09
03:26
Есть мнение, что у меня "сыплется база", у кого-нибудь есть догадки, что это значит и что с этим делать? DBCC CHECKDB говорит, что у него всё ОК
95 AlexNecro
 
24.06.09
03:27
Конечно хочется запустить тестирование и исправление, там ошибки есть, но оно занимает несовместимое со здравым смыслом время
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.