Имя: Пароль:
1C
1С v8
После переезда на новый сервер зависает запрос к базе
,
0 Скромный программер
 
28.12.20
07:57
Всем доброго дня.
Переехали на новый сервер и начались проблемы.
При выполнении запроса к большой таблице (250 тысяч записей), происходит зависание.
Запрос простой: ВЫБРАТЬ * ИЗ Справочник.Контрагенты
Запрос выполняется не в консоли а в коде обработки: Выборка = Запрос.Выполнить().Выбрать();
Агент сервера 64-х битный

Статистику MS SQL по всей базе обновил.
Насколько я понимаю, на стороне MS SQL запрос отрабатывается быстро, потому что при выполнении запроса к
sys.dm_exec_requests as er
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) qt
получаю только сам этот запрос, а мой проблемный запрос виден только в первые секунды после запуска обработки в 1С.

В технологическом журнале каждые 11 секунд появляется строка вроде этой:
46:27.173000-0,CONN,0,process=1cv8,OSThread=576696,Txt='Ping direction statistics: address=МойIP:1560,pingTimeout=60000,pingPeriod=12000,period=11000,packetsSent=1,avgResponseTime=0,maxResponseTime=0,packetsTimedOut=0,packetsLost=0,packetsLostAndFound=0'
И это может длиться часами
1 aka AMIGO
 
28.12.20
08:04
права, обратись к сисадмину
2 aka AMIGO
 
28.12.20
08:07
(1) + системные, а не в 1с
3 Скромный программер
 
28.12.20
08:08
Админ сам не знает, в чем проблема, может подскажете?
4 rphosts
 
28.12.20
08:09
(0) Вангую. А код:
Результат = Запрос.Выполнить().Выгрузить();
Выполняется пара сек максимум
5 rphosts
 
28.12.20
08:10
(3) потому-что это не админова проблема. На вопрос из (4) ответь
6 aka AMIGO
 
28.12.20
08:12
(5) ""потому-что это не админова проблема.""
админова. У нас тоже образовался новый сервер, половина не смогли работать,  пока сисадмины не прописали юзеров
7 aka AMIGO
 
28.12.20
08:13
(4) КУДА он выгружается, знаешь? не всё валится в Оп
8 Скромный программер
 
28.12.20
08:13
Насчет прав сомнительно, потому что урезанный запрос выполняется быстро: "ВЫБРАТЬ ПЕРВЫЕ 1000 * ИЗ Справочник.Контрагенты"

Что касается выполнения кода, то зависает именно на этой строке: Результат = Запрос.Выполнить().Выгрузить();
9 Скромный программер
 
28.12.20
08:15
У меня возникла проблема при выгрузке и я выяснил, что затык на этом запросе. Поэтому я набросал простую обработку с кодом:
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ * ИЗ Справочник.Контрагенты";
    Выборка = Запрос.Выполнить().Выбрать();
И этот код виснет
10 aka AMIGO
 
28.12.20
08:15
Ладно, вы все знаете больше меня. Не буду больше спорить )
11 ДенисЧ
 
28.12.20
08:16
А если

Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ * ИЗ Справочник.Контрагенты";
    рез = Запрос.Выполнить();
    Выборка = рез.Выбрать();

?
12 Скромный программер
 
28.12.20
08:18
Да если просто написать: Выборка = Запрос.Выполнить();
Зависает
13 rphosts
 
28.12.20
08:25
(9) а вот такой:

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ Контрагенты.Наименование ИЗ Справочник.Контрагенты Как Контрагенты";
    Выборка = Запрос.Выполнить().Выбрать();
14 shuhard
 
28.12.20
08:27
(12) и при этом склад работает и  платежки летают ?
15 rphosts
 
28.12.20
08:29
(14) там т.ч. в контрагентов может быть херова гора, в менеджере объекта у справочника может быть переопределено получение представления и т.п. в общем вариантов просто херова гора!
16 dmpl
 
28.12.20
08:30
(0) Замените * на имена полей и двоичным поиском ищите (удаляя половину полей за раз).
17 shuhard
 
28.12.20
08:32
(15) и контрагент  может быть с латинской буквой в наименовании справочника =)
18 Скромный программер
 
28.12.20
08:33
(13) выполнился за 5 секунд
19 Ёпрст
 
28.12.20
08:34
(0) кто куда переехал то хоть? Скуль на новый сервер? Сервер 1с на новый сервер? Файлопомойка сипользователями? Архитектура то какая хоть? Или все на одном сервере у вас?
20 Скромный программер
 
28.12.20
08:36
Купили новый сервак, там стоит и MS SQL и агент сервера. Проблемы одинаковые как при работе с другого сервера с этим скулем, так и при работе непосредственно на скуле.
21 Скромный программер
 
28.12.20
08:39
(16) К чему такие сложности, это запрос должен работать со звездочкой. Раньше работал.
22 rphosts
 
28.12.20
08:40
(18) Значит повторно может и менее чем 1 сек.

1.прекраити отбирать *, отбирай только то, что требуется
2.проверь что никакого переопределения получения представления нет.
3.будет время - подтяни матчасть по запросам
23 ДенисЧ
 
28.12.20
08:41
Если вернуть базу на старый сервер - зависания прекратятся?
24 rphosts
 
28.12.20
08:42
(20) настройки скуля, агент? Сервера СУБД или 1С?
снести к херам поставить нормально, с учётом того что всё на сервере - сделать им шаред мемори.
Надеюсь не под виртуалками всё это работает? Памяти хватает?  Диск (физический) не 1 на всё?
25 Провинциальный 1сник
 
28.12.20
08:43
Тут было бы интересно перехватить запрос в профайлере sql, и посмотреть план этого запроса.
26 rphosts
 
28.12.20
08:43
И да, открываем ИТС, ищем рекомендации настроек от 1С
27 Bigbro
 
28.12.20
08:45
не надо выбрать * писать. пожалуйста.
вам ведь реально * не нужно.
28 Скромный программер
 
28.12.20
08:45
(22) Во-первых, это не мой запрос, а типовой выгрузки из УПП в КА. Во-вторых, усвой простое правило: если запрос на старом сервере работал, а на новом нет, значит имеются проблемы и их нужно решать, а не пытаться залезть через зад.
29 Ёпрст
 
28.12.20
08:53
(20) ну так в sql server manager оставь протоколы только шаред мемори, в настройках электропитания выстави макс производительность, настрой сам скуль и агент сервера..
30 Ёпрст
 
28.12.20
08:53
+ дисковая система какая хоть? Темпдб скуля где хоть лежит?
31 ДенисЧ
 
28.12.20
08:54
(28) ответь на (23)
32 rphosts
 
28.12.20
08:55
(28) >Во-вторых, усвой простое правило

успехов!
33 dmpl
 
28.12.20
08:56
(21) Ну может там 4К фильм в хранилище значения лежит. Или представление криво получается.
34 Толич
 
28.12.20
08:56
(0) Добрый день.
Согласен с (24) в этой части
>>снести к херам поставить нормально, с учётом того что всё на сервере
>>Памяти хватает?

У меня около года назад после переезда на новый более серьезный по характеристикам физический сервер появилась проблема с быстродействием больших запросов. Производительность упала раз в 10 по ощущениям.  Но самое интересное, что никто не жаловался, кроме тех пользователей, кто работает с большими объемами данных. Устанавливал SQL сервер администратор.
В очередные выходные удалил SQL сервер, поставил заново, настроил православно (по Гилёву) и залил из dt туда базы. Заработало изумительно быстро.
35 Ёпрст
 
28.12.20
08:58
И да..сколько памяти ? Сколько скулю выдано?..
36 Ёпрст
 
28.12.20
08:59
+ какая чтепень параллизма выставлена у скуля?..и версии он какой хоть? 19?
37 Скромный программер
 
28.12.20
09:01
Некоторые новости: запрос с выборкой 10 тысяч записей выполняется за 6 секунд, а 100 тысяч завис  - ждал 10 минут и убил сеанс.
Через часик отвечу на все вопросы. Заранее спасибо за помощь.
38 Толич
 
28.12.20
09:01
И есть ли ограничение по памяти для SQL?
39 ptiz
 
28.12.20
09:23
(0) Под полными правами тоже зависает? Не в РЛС причина?
40 Скромный программер
 
28.12.20
10:07
(23) На старом серваке проблем не было и я не пытался снова повторить операцию на нем, тем более, что он на данный момент не доступен.

Тут много вопросов по скулю. Я не спец по MS SQL, но, насколько я понимаю, проблема не в нем. Я ранее писал, что на самом скуле запрос выполняется пару секунд и потом не висит в списке выполняемых. Из этого я и делаю вывод, что проблема не в скуле. Или я не прав?
Перечень активных запросов на скуле можно получить вот этим запросом:

SELECT qt.text, *
FROM
sys.dm_exec_requests as er
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) qt
WHERE
database_id = DB_ID('DatabaseName')
41 arsik
 
гуру
28.12.20
10:09
(40) Скорее всего параллелизм включен в 0 и большие порции он пытается распараллелить.
42 Скромный программер
 
28.12.20
10:10
Диски SSD, TempDB на отдельном диске.

А где настраивается параллелизм и какое там должно быть значение?
43 Скромный программер
 
28.12.20
10:20
параллелизм включен в 1, как и рекомендует 1С
44 Йохохо
 
28.12.20
10:24
поля неограниченной длины?
45 Скромный программер
 
28.12.20
10:25
Еще по тестам с размерами выборки:
10 тыс - 3 сек
20 тыс - 12 сек
30 тыс - 27 сек
40 тыс - 1 мин 8 сек
50 тыс - 2 мин 36 сек

Такой экспоненциальный рост - это нормально?
46 Йохохо
 
28.12.20
10:36
(45) это значит есть гонка за какой то ресурс, например сеть
47 Йохохо
 
28.12.20
10:36
или свап
48 Скромный программер
 
28.12.20
10:43
(46) Сеть отпадает: запустил 1с на скульном серваке и там примерно те же показатели
49 Скромный программер
 
28.12.20
10:45
(30) На скуле SSD-диски, TempDB на отдельном.
50 Скромный программер
 
28.12.20
10:46
(44) Справочник Контрагенты отличается от типового двумя числовыми реквизитами (конфигурация УПП)
51 Йохохо
 
28.12.20
10:49
в мониторе ресурсов случаем вся память не в "Ожидание"?
52 Скромный программер
 
28.12.20
10:55
В "Ожидание" небольшая часть, основные - это "Используется" и "Свободно" (много)
53 Йохохо
 
28.12.20
10:59
МС СКЛ аллоу лок пайджес ин мемори, как то так, ?
54 Garykom
 
гуру
28.12.20
11:06
(0) У вас сервер 1С и mssql на одном сервере?
55 H A D G E H O G s
 
28.12.20
11:07
Что нам говорит бог фактического плана запроса xml ?
56 H A D G E H O G s
 
28.12.20
11:08
Я делаю ставку на mdop=0
57 Garykom
 
гуру
28.12.20
11:09
(56) А я на кривые настройки rphost и канал между ним и mssql
58 ptiz
 
28.12.20
11:20
(45) А напрямую в sql как запрос по таблице контрагентов отрабатывает?
59 Bigbro
 
28.12.20
11:28
такой рост это кто то в память не влезает и идет своп, причем своп какой то повторно многократный.
60 Александр111
 
28.12.20
11:28
Попробуй из https://www.plus-aliance.ru/news/tekhnoblog/service-databases-microsoft-sql-server-for-1c-operation/
Перестроения индекса и «Обновление статистик»
61 dmpl
 
28.12.20
11:45
А если явно упорядочить по наименованию или коду?
62 Fram
 
28.12.20
12:07
Судя по (18) дело в объеме данных. Либо каждая запись это до хрена байтов, либо канал между скулем и 1с сервером очень узкий.
63 Скромный программер
 
28.12.20
12:15
(54) Да, у нас MS SQL и агент сервера 1С на одной машине.
(55) С этим некоторые сложности: на новом серваке стоит какой-то урезанный MS SQL (не экспресс) и в профайлере нельзя установить отбор по идентификатору ИБ, а в той лавине, которая льется черт ног сломит.
(57) Можно по-подробнее?
(59) Памяти вроде достаточно - запускаю обработку и смотрю монитор ресурсов - там нет никакого переполнения.
(62) У нас shared memory и по идее никакие каналы не используются.
(61) Зачем?
64 Скромный программер
 
28.12.20
12:16
Еще раз отмечу, что после запуска обработки, в MS SQL запрос появляется в списке исполняемых на несколько секунд и потом исчезает.
65 Bigbro
 
28.12.20
12:21
(63) скулю достаточно, может рпхосту не хватает принять что ему скуль вываливает?
последите за ресурсами которые жрет рпхост в этот момент.
66 Garykom
 
гуру
28.12.20
12:22
(64) см (65)
250к табличка это мелочи для скуля, он за секунды выберет
а вот потом при передаче из скуля в сервер 1С висяки
67 МихаилМ
 
28.12.20
12:23
версии платформы на старом и новом сервере?
68 Garykom
 
гуру
28.12.20
12:24
(63) >Можно по-подробнее?

настройки рабочего сервера 1С глянь
69 H A D G E H O G s
 
28.12.20
12:28
(63) "С этим некоторые сложности: на новом серваке стоит какой-то урезанный MS SQL (не экспресс) и в профайлере нельзя установить отбор по идентификатору ИБ, а в той лавине, которая льется черт ног сломит. "

Ты втираешь какую-то дичь.
70 H A D G E H O G s
 
28.12.20
12:28
(63) Давай я подключусь, пиши на [email protected]
71 Скромный программер
 
28.12.20
12:40
(65) Насчет rphost поговорю с админом, может в этом что-то есть.
(67) 8.3.16.1659
(68) Какие именно?
(69) Втирают мазь в радикулит. Вот ссылка на мой фильтр в профайлере: https://ibb.co/ZhZmbPk
И еще раз говорю, скуль отрабатывает запрос в течение нескольких секунд, что ты там в профайлере найти хочешь?
72 Garykom
 
гуру
28.12.20
12:41
(71) >Какие именно?

Глянь картинки http://catalog.mista.ru/1c/articles/1119524/
и тут http://www.gilev.ru/app1c/
73 dmpl
 
28.12.20
12:46
(63) Затем, чтобы rphost не вздумал пузырьком по представлениям сортировать.
74 arsik
 
гуру
28.12.20
13:20
(71) Покажи вот эту картинку из монитора ресурсов
https://i.imgur.com/gaEdOrO.png
75 Йохохо
 
28.12.20
13:21
(74) - (52)
76 Скромный программер
 
28.12.20
13:26
77 arsik
 
гуру
28.12.20
15:03
(76) Это реально 512 Гигов памяти?
78 H A D G E H O G s
 
28.12.20
15:16
(77) Ну а что такого?
79 Провинциальный 1сник
 
28.12.20
15:27
(71) "скуль отрабатывает запрос в течение нескольких секунд, что ты там в профайлере найти хочешь"
Собственно текст запроса. Чтобы его потом запустить отдельно с выводом плана выполнения.
80 ssh2006
 
28.12.20
15:47
(79) +1
81 ansh15
 
28.12.20
16:08
>> process=1cv8,OSThread=576696,Txt='Ping direction statistics: address=МойIP:1560
Это же клиентская часть, как я понимаю? Может, она ждет и не дождется ответа от сервера?
Она 32-х разрядная?
После этой строки нет никаких сообщений типа "Time expired" или тому подобных?
82 Йохохо
 
28.12.20
16:54
(81) "каждые 11 секунд появляется строка" "period=11000" it work's!
83 rphosts
 
28.12.20
17:13
(56) (57) ставлю на дичь в настройках и чьей-то голове.
84 dmpl
 
29.12.20
12:27
(81) Это сообщение о том, что проверка связи клиента и сервера успешно прошла. Если клиент перестанет связываться с сервером - сеанс будет отмечен как спящий, а потом и вовсе принудительно завершен. Нужно просто в настройках ТЖ отключить это событие, чтобы оно не мешало, но настроить событие "время выполнения дольше N секунд" с выводом контекста.
85 milkas90
 
29.12.20
13:08
Сайт быстрых онлайн знакомств в Иркутске https://flirtisms.ru/ Только реальные люди с реальными фото и телефонами. Хватит стеснятся, выбирай понравившееся объявление и звони!
86 ansh15
 
29.12.20
13:38
(82)(84) Я понимаю. Просто автор темы заострил внимание именно на этом сообщении. Наверное, поизучав ТЖ более детально и вдумчиво("погрепить", так сказать) можно найти причину столь долгого ожидания, хотя бы выяснить кто кого ждет.
87 Дык ё
 
29.12.20
17:05
(71) установи флажок Show all columns перед открытием фильтра
88 SiAl-chel
 
29.12.20
19:02
(0) Было что-то подобное при переводе админами баз на новый MS SQL или у баз была версия совместимости повышена. Тогда закрытие месяца или проведение регламентных документов стремилось к бесконечности. Спасло само простое: тестирование и исправление через Конфигуратор.