|
v7: Зависоны SQL2008, 1c 7.7 | ☑ | ||
---|---|---|---|---|
0
Sereja
22.03.12
✎
12:33
|
Добрый день. Подскажите по вопросу нагрузки SQL сервера
Дано: Sql2008 64x, Server 2003 64x, 1c 7.7 27релиз. 50-60 активных пользователей. В течение дня сервер загружен на пару процентов. Но, время от времени (3-4 раза в день), загрузка процессора по "perfmon.msc" достигает 80-100 процентов В это время все 1ска зависает у всех. Пользователи есть и терминальные и нетерминальные. Конфигурация самописка. Очень много переведено на прямые запросы. В 2008 sql сервере, отчет "последние русурсоемкие запросы" выдает информацию о запросах которые делают нагрузку. Главный вопрос, как мне теперь в 1ске найти что именно ? какие отчеты ? какие документы ? какие операции выдают такую нагрузку. В соновном все польщователи сидят в терминале, поэтому в склных отчетах рабочай станция = терминал, пользователь = sa Смотрел формум, читал статьи типа http://www.k-press.ru/cs/2009/3/DBA/dba2.asp, но мне пока все таки не ясно, как выловить узкие места в 1с. Спасибо |
|||
1
Sereja
22.03.12
✎
12:36
|
ап
|
|||
2
Sereja
22.03.12
✎
12:41
|
ап1
|
|||
3
МихаилМ
22.03.12
✎
12:42
|
на скл ру куча обсуждений
|
|||
4
Гефест
22.03.12
✎
12:42
|
и какой процесс грузит процессор?
|
|||
5
МихаилМ
22.03.12
✎
12:44
|
опять же если терминал и скл на одном физическом компютере - нужен патч ромикса
|
|||
6
Sereja
22.03.12
✎
12:47
|
(4) sqlserver.exe
(5) терминал и скл конечно же разнесены по разным серверам (3) Можно пример ? |
|||
7
Z1
22.03.12
✎
12:48
|
слишком мало информации
1.sql и терминал на одном сервере или на разных если на одном вот тебе одна из причин. 2.Зачем на win2003 ставите sql2008 надо ставить на win 2008 3. Подробно опиши файловую систему qsl сервера |
|||
8
dk
22.03.12
✎
12:48
|
если особе не париться, то выставить в параметрах max degree of parallelism от 1 до половины количества процов и не наблюдать 100% загрузку по процам больше
|
|||
9
nicxxx
22.03.12
✎
12:49
|
(0) приблуда от romix-a стоит? (которая лечит взаимные блокировки)
|
|||
10
Z1
22.03.12
✎
12:50
|
(8) Бред полный.
я одной строкой в модуле проведения Предупреждение("Ждкм-с"); положу любой сервер с любыми характеристиками |
|||
11
МихаилМ
22.03.12
✎
12:52
|
||||
12
Z1
22.03.12
✎
12:54
|
(0) во время "пиковой" загрузки смотри по sp_lock какие таблицы блокированы + длину очереди к диску.
Также для 1с модель востановления simple |
|||
13
dk
22.03.12
✎
12:55
|
(10) многопроцессорный скуль?
"не смешите мои тапки" ))) |
|||
14
Sereja
22.03.12
✎
12:55
|
(7) На разных
2. Я думаю это все таки не причина зависона. Мне надо узкое место найти а не систему переставить 3. Raid 10. Базы лога и базы лежат на одном диске. Я понимаю что это не так как надо, но все-таки вопрос не в этом |
|||
15
Z1
22.03.12
✎
12:58
|
(13) Вы понимаете что написано в 10 и как именно документ проводит ( какие таблицы блокирует ) клиент 1с.exe ???
|
|||
16
МихаилМ
22.03.12
✎
13:00
|
да все мимо.
извесная проблема . начиная с скл 2005 177с бывают подвисания из-за дибильной таблицы 1SCRDOC те проблеме 6 лет. |
|||
17
dk
22.03.12
✎
13:01
|
(15) речь идет про 100% загрузку на сервере скуля, так что от 1 сеанса 1с добиться такого результата можно только при max degree of parallelism = 0
--- Тут речи про блокировки вообще не идет (10) 1с может и положит, но скуль будет просто отдыхать и ничего не делать |
|||
18
Z1
22.03.12
✎
13:01
|
(14)
"Я думаю это все таки не причина зависона. Мне надо узкое место найти а не систему переставить " может и не причина но на ос win 2003 выравнивание физич. блоков надо делать самому в win 2008 это уже сделано по умолчанию. |
|||
19
Sereja
22.03.12
✎
13:01
|
(12) какие таблицы заблокированы написано в графе OBJID ?
(16) Делать то что ? |
|||
20
Ёпрст
22.03.12
✎
13:03
|
(19) переписывать обращения в коде с ВыбратьПодчиненныеДоки на предмет указания дат..
|
|||
21
Sereja
22.03.12
✎
13:05
|
(20) Везде переписать или все таки можно найти в каком конкретно месте переписать ?
(8) max degree of parallelism - по русски как ? Максимальное количество рабочих потоков ? у меня по дефолту 0 стоит |
|||
22
МихаилМ
22.03.12
✎
13:05
|
конкретно что делать разбирать не буду.
но есть 3 решения 1) отказ от дибильного кластерного индекса 2) подмена запросов с помощью vk_hook1C 3) и самый простой - частое обновление статистик для этой таблицы. |
|||
23
Кириллка
22.03.12
✎
13:08
|
+1 за версию про выборку подчиненки.
(0)А как дружилась 1с-ка с sql2008? |
|||
24
Z1
22.03.12
✎
13:08
|
(22) Если чесно ни одного из твоих решений не понял
|
|||
25
dk
22.03.12
✎
13:08
|
(21) Свойства сервера - дополнительно - максимальная степень параллелизма
|
|||
26
Z1
22.03.12
✎
13:09
|
(0) Если есть то избавляйся от общих реквизитов неограниченной длины.
|
|||
27
МихаилМ
22.03.12
✎
13:09
|
MAXDOP - не поможет
ВыбратьПодчиненныеДоки поможет частично есть еще 4 способ - отказ от отборов. |
|||
28
Sereja
22.03.12
✎
13:11
|
(23) http://infostart.ru/public/82018/
(25) - стоит 0. Сколько должно стоять ? (26) Есть только один "КомментарийДок", неограниченной длинны. Стоит замочить ? |
|||
29
Кириллка
22.03.12
✎
13:12
|
(28)переходи на версию 7, там это реализовано
|
|||
30
Кириллка
22.03.12
✎
13:13
|
+29 Переходи на версию 77.027.7 :)
|
|||
31
v8Newbie
22.03.12
✎
13:13
|
(0) А по тексту поискать - не? Если прямые запросы-то?
|
|||
32
dk
22.03.12
✎
13:14
|
(28) >выставить в параметрах max degree of parallelism от 1 до половины количества процов
--- скока процов у скуля? проблему это не решит, но симптомы снизит |
|||
33
Z1
22.03.12
✎
13:15
|
(28) очень даже стоит. как минимум убиваешь 16 байт на запись в _1sjourn
неявных преимущест гораздо больше |
|||
34
Sereja
22.03.12
✎
13:17
|
(32) 16
|
|||
35
dk
22.03.12
✎
13:17
|
(34) ну и поставь 4
|
|||
36
Ёпрст
22.03.12
✎
13:18
|
(29) ты подменял запросы в ней или.. как реализовал то хоть ?
|
|||
37
Z1
22.03.12
✎
13:18
|
(0) что выдает
select count(*) from _1sjourn(nolock) и с какого периода ведуться документы. |
|||
38
Кириллка
22.03.12
✎
13:20
|
(36)нуда, все сделано в тойже концепции. Удалось малой кровью заменить запрос на другой, профит удался.
|
|||
39
Sereja
22.03.12
✎
13:21
|
А почему не 8 если до половины ?
(37) 415482. Документы с 01.01.06. База 10 гб |
|||
40
Ёпрст
22.03.12
✎
13:22
|
(38) ну супер.. а с авторизацией там тоже усё порешено ?
|
|||
41
Z1
22.03.12
✎
13:24
|
(39) c 90 процентной вероятностью у тебя не закрываются регистры
(если только не хранишь в базе какие либо двоичные данные) |
|||
42
dk
22.03.12
✎
13:26
|
(39) это параметр отвечает за то, сколько процов может 1 запрос занять
с одной стороны чем больше процов отдашь, тем шустрее запрос выполнится - но не всегда ) с другой стороны если запрос займет много процов, то остальным может не хватить ---- так что тут пробовать надо, но больше половины не советуют отдавать в многопользовательских базах |
|||
43
Sereja
22.03.12
✎
13:27
|
(41) Регистров нет вообще. Так получилось что база построена на бух. итогах
|
|||
44
Z1
22.03.12
✎
13:30
|
(43) с бухгалтерией не работал так досканально но там точно такой же принцип
что не закрытый регистр что не закрытый счет суть одна и та же. ТАк есть или нет бинарные данные ? Если есть то скажи объем базы приблтзительный без бинарных данных |
|||
45
Sereja
22.03.12
✎
13:31
|
(44) Бинарных файлов нет вообще
|
|||
46
Sereja
22.03.12
✎
13:32
|
(44) просто проц время от времени начинает что-то считать. Я хочу понять что. Я б на первое время это просто заблокировал
|
|||
47
Z1
22.03.12
✎
13:35
|
а такой запрос
select count(*) from _1sentry(nolock) также какое максимальное кол-во субконт на проводку |
|||
48
МихаилМ
22.03.12
✎
13:36
|
(46)
ну соберите трассу с временем исполнения > 30 секунд. и круг сузится |
|||
49
Z1
22.03.12
✎
13:36
|
(46) может у тебя регламентные задания начинают выполняться по jc или по sql
|
|||
50
Sereja
22.03.12
✎
13:37
|
(47) 5921981
Субконто всегда 3 (49) Регламентные все замочил |
|||
51
Z1
22.03.12
✎
13:42
|
(50) ну тогда давай имя и размер самой большой таблицы
(скорее всего это где хранятся итоги по субконто) |
|||
52
Sereja
22.03.12
✎
13:45
|
(51) Как это вычислить ?
|
|||
53
Lionee
22.03.12
✎
13:49
|
1,Sql2008 64x, ?.7 с костылями не есть айс
2.есть и терминальные и нетерминальные вот еще затык. не терминальные и делают длинные блокировки 3. Базы лога и базы лежат на одном диске,разнести их делов то |
|||
54
Кириллка
22.03.12
✎
13:50
|
(40)ну вроде да
|
|||
55
Z1
22.03.12
✎
13:55
|
(53) 1.Как "костыли" влияют на sql загрузку и sql запросы ?
про 2. объясни подробней и о каких именно блокировках речь ? 3 ну вроде не просто диск а raid-10 |
|||
56
Кириллка
22.03.12
✎
13:55
|
(0)"В 2008 sql сервере, отчет "последние русурсоемкие запросы" выдает информацию о запросах которые делают нагрузку"
так ты покажи этот тяжелый запрос, тебе все и расскажут. Разнообразий запросов в 1с не так уж и много. |
|||
57
Z1
22.03.12
✎
13:59
|
(0) речь о sql сервере
как реализован диск raid-10 контролер аппаратный и кешированный и размер кеш памяти. Где лежит ос на каком диске и где и на каком диске swap win oc ну и количество оперативной памяти на sql сервере |
|||
58
Sereja
22.03.12
✎
14:02
|
(56) Например
SELECT SUM(SD+OBDT1-OBKT1+OBDT2-OBKT2+OBDT3-OBKT3) FROM ( SELECT ID FROM _1SACCS WITH (NOLOCK) WHERE PLANID=8 AND SCHKOD>=' 41. 1.' AND substring(SCHKOD,1,7)=' 41. 1.' AND (SC0 = 1240 OR SC1 = 1240 OR SC2 = 1240) AND (SC0 = 1120 OR SC1 = 1120 OR SC2 = 1120) ) AS DT,_1SBKTTL BKTTL WITH (NOLOCK) WHERE DATE='20120101' AND KIND='3' AND ACCID=DT.ID AND ( BKTTL.VSC0=1240 AND BKTTL.SC0=' 249P ' OR BKTTL.VSC1=1240 AND BKTTL.SC1=' 249P ' OR BKTTL.VSC2=1240 AND BKTTL.SC2=' 249P ' ) AND ( BKTTL.VSC0=1120 AND BKTTL.SC0=' 1 ' OR BKTTL.VSC1=1120 AND BKTTL.SC1=' 1 ' OR BKTTL.VSC2=1120 AND BKTTL.SC2=' 1 ' ) И SELECT ACCID,CURRID,FLAGS=MAX(FLAGS),VSC0=MAX(VSC0),SC0,OSC0=MAX(OSC0),VSC1=MAX(VSC1),SC1,OSC1=MAX(OSC1),VSC2=MAX(VSC2),SC2,OSC2=MAX(OSC2),SUMSD=SUM(SUMSD),CURSUMSD=SUM(CURSUMSD),AMOUNTSD=SUM(AMOUNTSD),SUMDT=SUM(SUMDT),SUMKT=SUM(SUMKT),CURSUMDT=SUM(CURSUMDT),CURSUMKT=SUM(CURSUMKT),AMOUNTDT=SUM(AMOUNTDT),AMOUNTKT=SUM(AMOUNTKT) FROM ( SELECT ACCID=ACCDTID,CURRID=CASE WHEN (DTFLAGS&1)=0 THEN ' 0 ' ELSE CURRID END,FLAGS=DTFLAGS,VSC0=VDTSC0,SC0=DTSC0,OSC0=ODTSC0,VSC1=VDTSC1,SC1=DTSC1,OSC1=ODTSC1,VSC2=VDTSC2,SC2=DTSC2,OSC2=ODTSC2,SUMSD=-CONVERT(NUMERIC(22, 4), SUM_),CURSUMSD=-CONVERT(NUMERIC(22, 4), CURSUM),AMOUNTSD=-CONVERT(NUMERIC(22, 4), AMOUNT),SUMDT=CASE WHEN DATE_TIME_DOCID<'20120320DGFK2O 8Y7S 0' THEN CONVERT(NUMERIC(22, 4), SUM_) ELSE 0 END,SUMKT=0,CURSUMDT=CASE WHEN DATE_TIME_DOCID<'20120320DGFK2O 8Y7S 0' THEN CONVERT(NUMERIC(22, 4), CURSUM) ELSE 0 END,CURSUMKT=0,AMOUNTDT=CASE WHEN DATE_TIME_DOCID<'20120320DGFK2O 8Y7S 0' THEN CONVERT(NUMERIC(22, 4), AMOUNT) ELSE 0 END,AMOUNTKT=0 FROM ( SELECT ID FROM _1SACCS WITH (NOLOCK) WHERE PLANID=8 AND SCHKOD>=' 41. 2.' AND substring(SCHKOD,1,7)=' 41. 2.' OR PLANID=8 AND SCHKOD>=' 42. 1.' AND substring(SCHKOD,1,7)=' 42. 1.' OR PLANID=8 AND SCHKOD>=' 42. 3.' AND substring(SCHKOD,1,7)=' 42. 3.' OR PLANID=8 AND SCHKOD>=' 42. 5.' AND substring(SCHKOD,1,7)=' 42. 5.') AS DT,_1SENTRY ENTRY WITH (NOLOCK) WHERE PROVKIND<>'K' AND DATE_TIME_DOCID>='20120320DGFK2O 8Y7S ' AND DATE_TIME_DOCID<'20120401 0 0 ' AND ACTIVE=' ' AND ENTRY.ACCDTID=DT.ID UNION ALL SELECT ACCID=ACCKTID,CURRID=CASE WHEN (KTFLAGS&1)=0 THEN ' 0 ' ELSE CURRID END,FLAGS=KTFLAGS,VSC0=VKTSC0,SC0=KTSC0,OSC0=OKTSC0,VSC1=VKTSC1,SC1=KTSC1,OSC1=OKTSC1,VSC2=VKTSC2,SC2=KTSC2,OSC2=OKTSC2,SUMSD=CONVERT(NUMERIC(22, 4), SUM_),CURSUMSD=CONVERT(NUMERIC(22, 4), CURSUM),AMOUNTSD=CONVERT(NUMERIC(22, 4), AMOUNT),SUMDT=0,SUMKT=CASE WHEN DATE_TIME_DOCID<'20120320DGFK2O 8Y7S 0' THEN CONVERT(NUMERIC(22, 4), SUM_) ELSE 0 END,CURSUMDT=0,CURSUMKT=CASE WHEN DATE_TIME_DOCID<'20120320DGFK2O 8Y7S 0' THEN CONVERT(NUMERIC(22, 4), CURSUM) ELSE 0 END,AMOUNTDT=0,AMOUNTKT=CASE WHEN DATE_TIME_DOCID<'20120320DGFK2O 8Y7S 0' THEN CONVERT(NUMERIC(22, 4), AMOUNT) ELSE 0 END FROM ( SELECT ID FROM _1SACCS WITH (NOLOCK) WHERE PLANID=8 AND SCHKOD>=' 41. 2.' AND substring(SCHKOD,1,7)=' 41. 2.' OR PLANID=8 AND SCHKOD>=' 42. 1.' AND substring(SCHKOD,1,7)=' 42. 1.' OR PLANID=8 AND SCHKOD>=' 42. 3.' AND substring(SCHKOD,1,7)=' 42. 3.' OR PLANID=8 AND SCHKOD>=' 42. 5.' AND substring(SCHKOD,1,7)=' 42. 5.') AS DT,_1SENTRY ENTRY WITH (NOLOCK) WHERE PROVKIND<>'D' AND DATE_TIME_DOCID>='20120320DGFK2O 8Y7S ' AND DATE_TIME_DOCID<'20120401 0 0 ' AND ACTIVE=' ' AND ENTRY.ACCKTID=DT.ID UNION ALL SELECT ACCID,CURRID,FLAGS,VSC0,SC0,OSC0,VSC1,SC1,OSC1,VSC2,SC2,OSC2,SUMSD=CASE WHEN KIND='1' THEN SD+OBDT1-OBKT1+OBDT2-OBKT2+OBDT3-OBKT3 ELSE 0 END,CURSUMSD=CASE WHEN KIND='2' THEN SD+OBDT1-OBKT1+OBDT2-OBKT2+OBDT3-OBKT3 ELSE 0 END,AMOUNTSD=CASE WHEN KIND='3' THEN SD+OBDT1-OBKT1+OBDT2-OBKT2+OBDT3-OBKT3 ELSE 0 END,SUMDT=0,SUMKT=0,CURSUMDT=0,CURSUMKT=0,AMOUNTDT=0,AMOUNTKT=0 FROM ( SELECT ID FROM _1SACCS WITH (NOLOCK) WHERE PLANID=8 AND SCHKOD>=' 41. 2.' AND substring(SCHKOD,1,7)=' 41. 2.' OR PLANID=8 AND SCHKOD>=' 42. 1.' AND substring(SCHKOD,1,7)=' 42. 1.' OR PLANID=8 AND SCHKOD>=' 42. 3.' AND substring(SCHKOD,1,7)=' 42. 3.' OR PLANID=8 AND SCHKOD>=' 42. 5.' AND substring(SCHKOD,1,7)=' 42. 5.') AS DT,_1SBKTTL BKTTL WITH (NOLOCK) WHERE DATE>='20120101' AND DATE<='20120101' AND KIND<='3' AND ACCID=DT.ID ) AS OB GROUP BY ACCID,CURRID,SC0,SC1,SC2 HAVING SUM(SUMSD)<>0 OR SUM(CURSUMSD)<>0 OR SUM(AMOUNTSD)<>0 OR SUM(SUMDT)<>0 OR SUM(SUMKT)<>0 OR SUM(CURSUMDT)<>0 OR SUM(CURSUMKT)<>0 OR SUM(AMOUNTDT)<>0 OR SUM(AMOUNTKT)<>0 Это лидеры |
|||
59
Кириллка
22.03.12
✎
14:29
|
(58)да, поди, эти запросы не вешают систему в хлам. Версия скуля какая конкретно? Когда 3-4 раза в день наблюдается такой зависон, то в процессах скуля нет ghost cleanup'а случайно?
|
|||
60
Sereja
22.03.12
✎
18:18
|
Всем спасибо. Проблема вроде решилась
Изменил: max degree of parallelism = 8 |
|||
61
Sereja
22.03.12
✎
18:33
|
+(60) И в настройках процессора убрал галки с 16 процессора
|
|||
62
МихаилМ
26.03.12
✎
22:23
|
еще некоторое ускорение дает
установка collation в двоичную регистрозависимую у полей внутренних идентификаторов id,iddoc datetime iddoc. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |