Имя: Пароль:
1C
1С v8
Оперативная память SQL Server
,
0 Tester
 
06.11.19
13:33
Всем привет.
Как известно, MS SQL Server выедает всю выделенную ему память. Может кто подскажет, как узнать сколько оперативной памяти доступно для выполнения запроса в 1С в рамках этой выеденной памяти?
https://d.radikal.ru/d06/1911/89/1a6f909edced.png
1 ДенисЧ
 
06.11.19
13:34
Сколько свопа хватит
2 Tester
 
06.11.19
13:46
Просто началась проблема с тем, что одно из ночных регламентных заданий стало периодически падать с ошибкой "Недостаточно памяти для получения результата запроса к базе данных". Да, там ворочается десяток временных таблиц в менеджере запросов, но организована нормальная их очистка после потери актуальности. И в результате возникает главный вопрос - если я, например, знаю, что для выполнения запроса в 1С нужно 50 ГБ памяти для сиквела, то как узнать, если среди выеденных сиквелом 350 ГБ есть эти свободные 50 ГБ для выполнения?
3 H A D G E H O G s
 
06.11.19
13:53
(2) dmv поможет вам узнать текст этого запроса.
Техжурнал с DBMSSQL - узнать регзадание и строчку текста кода.
Прямые руки - переписать этот кусок треша.
4 H A D G E H O G s
 
06.11.19
13:54
Как же люди любят лечить проблемы, прикрывая дыру в асфальте картонкой.
5 SSSSS_AAAAA
 
06.11.19
14:04
(0) А с чего взяли, что это хоть как-то соотносится именно с SQL сервером? Или вы считаете, что это SQL сервер получает результаты запроса?
6 mistеr
 
06.11.19
14:45
(5) +1, сообщение скорее говорит о том, что памяти не хватило рабочему процессу сервера 1С.

Советую еще журналы винды глянуть.
7 mistеr
 
06.11.19
14:46
(2) Если временные таблицы не влезают в ОП, они размещаются на диске.
8 Tester
 
06.11.19
15:01
(5) (6) что-то я похоже запутался, но немного проясняется ) Т.е. при такой ошибке 100% не хватает оперативной памяти rphost'у, т.к. он не умеет писать в файл подкачки? А сиквел умеет писать в tempdb и файл подкачки, поэтому можно хранить, например временные таблицы больше размера оперативной памяти?

Если все так, тогда просто надо уменьшить объем выделяемой оперативной памяти сиквелу и оставить больше для rphost'ов, т.к. сервер БД и 1С на одной машине?
9 mistеr
 
06.11.19
15:11
(8) Смотри логи
10 dmrjan
 
06.11.19
15:47
(0) Заходишь в SQL Server Managmet Studio и ограничиваешь объем оперативки, выделяемой на нужды MSSQL.
11 dmrjan
 
06.11.19
15:52
Кроме того включи регулятор запросов со значением примерно 10000. Нужно будет - увеличишь. По крайней мере будешь знать - кто делает злобные отчеты.
12 H A D G E H O G s
 
06.11.19
15:55
(11) Когда эти кто-то постучат в дверь (в лучшем случае) автору сапогом.
13 H A D G E H O G s
 
06.11.19
15:56
(11) Но вообще автор сказал же, что это регламенты, считающие 100500 раз базу данных и вываливающие 0.5% реально нужных данных в результат.
14 mistеr
 
06.11.19
16:34
(13) Похоже, совсем не 0.5%, раз памяти не хватает.
15 mistеr
 
06.11.19
16:35
(14) Но даже это не было бы проблемой, если бы 1С умела обрабатывать результат запроса без загрузки всех данных в память.
16 Tester
 
11.11.19
09:02
(9) В логах винды ничего нет.
(13) (14) в том то и дело, что не 0.5%. В общем урезал нормально так объем выделяемой памяти сиквелу и пока проблем нет. Плюс в планах оптимизация запроса, т.к. к сожалению используются поля составных типов.
17 Cyberhawk
 
11.11.19
09:23
Сервер 1С 32б что ли?
18 Cyberhawk
 
11.11.19
09:30
Но скорее всего это срабатывает "Максимальный объем памяти рабочих процессов" и "Безопасный расход памяти за один вызов"
19 Tester
 
11.11.19
09:59
(17) Нет, 64.
1-й параметр стоял в 50 гигов. Вернул 0 на всякий случай.
20 Провинциальный 1сник
 
11.11.19
10:03
(5) +1, стопудово тут sql-сервер ни при чем. Ему память жизненно не так уж и важна, и является больше фактором быстродействия. Само по себе ядро sql-сервера много не ест, практически вся используемая память - это кэш данных и вторичных структур для более быстрого поиска.
21 Cyberhawk
 
11.11.19
10:32
(19) "1-й параметр стоял в 50 гигов" // Это и была вероянтая причина. Сколько там отъел скуль на это не влияет, можешь возвращать взад.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн