Бешеные тормоза после переноса на MS SQL #742361


#0 by Альбатрос
После переноса переписанной файловой базы УТ 10.3 на MS SQL наблюдается лютые тормоза при работе с ней. Пользователей немного, штук 15 одновременной работы.При проведении ОРП с ТЧ в 226 строк система задумывается на 2(!) минуты, при чем 97% времени на строчку: УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка, Движения.СписанныеТовары.Выгрузить); Ну и формирование всяких отчетов стало занимать намного больше времени. На этом же сервере крутится еще 4 базы, с ними таких проблем нет. Настройки БД у всех одинаковые. Вроде и гуглил, и статейки всякие читал - причину найти не могу. Спасайте! Вводные: 8-ядерный Xeon CPU E5-2407 32Гб оперативной памяти SCSI винт (на котором базы) База УТ 10.3 размером в почти 9 Гб Платформа 1С:Предприятие 8.2 (8.2.19.90) Сервер 1с предприятия находится на другом компе Если нужна еще какая-нибудь информация - скажите. Насоветуйте чего-нибудь.
#0 by Альбатрос
После переноса переписанной файловой базы УТ 10.3 на MS SQL наблюдается лютые тормоза при работе с ней. Пользователей немного, штук 15 одновременной работы.При проведении ОРП с ТЧ в 226 строк система задумывается на 2(!) минуты, при чем 97% времени на строчку: УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка, Движения.СписанныеТовары.Выгрузить); Ну и формирование всяких отчетов стало занимать намного больше времени. На этом же сервере крутится еще 4 базы, с ними таких проблем нет. Настройки БД у всех одинаковые. Вроде и гуглил, и статейки всякие читал - причину найти не могу. Спасайте! Вводные: 8-ядерный Xeon CPU E5-2407 32Гб оперативной памяти SCSI винт (на котором базы) База УТ 10.3 размером в почти 9 Гб Платформа 1С:Предприятие 8.2 (8.2.19.90) Сервер 1с предприятия находится на другом компе Если нужна еще какая-нибудь информация - скажите. Насоветуйте чего-нибудь.
#1 by Альбатрос
+ Microsoft SQL Server 2008 R2
#2 by shuhard_серый
#3 by Andrewww123
Я бы на индексы обратил внимание. Ну и регламентные процедуры обязательно настроить(проверить выполняются ли).
#4 by Альбатрос
SCSIDiskIBM_____ServeRAID_M5110_3.24
#5 by Альбатрос
Можно поподробней? желательно статью, где эти проблемы описываются
#6 by shuhard_серый
в хвосте это не скази, это название драйвера рэйда
#7 by Andrewww123
Про индексы. Вот таким запросом можно смотреть статистику по отсутствующим индексам. В конце дня нужно выполнить и если есть в результате какие-то строки, то нужно разбираться и создавать индексы. SET NOCOUNT ON DECLARE @dbid int IF (object_id('tempdb..##IndexAdvantage') IS NOT NULL) DROP TABLE ##IndexAdvantage CREATE TABLE ##IndexAdvantage ([Преимущество индекса] float, [База данных] varchar, [Transact SQL код для создания индекса] varchar, [Число компиляций] int, [Количество операций поиска] int, [Количество операций просмотра] int, [Средняя стоимость ] int, [Средний процент выигрыша] int ); DECLARE DBases CURSOR FOR SELECT database_id FROM sys.master_files -- Получаем список ID баз данных WHERE state = 0 AND -- ONLINE has_dbaccess(db_name(database_id)) = 1 -- Only look at databases to which we have access GROUP BY database_id OPEN DBases FETCH NEXT FROM DBases WHILE @@FETCH_STATUS = 0 BEGIN -- Выполняем для каждой базы данных --------------------------------------------------       [Transact SQL код для создания индекса] = 'CREATE INDEX [IX_' + OBJECT_NAME(mid.object_id,@dbid) + '_' +       CAST(mid.index_handle AS nvarchar) + '] ON ' +       mid.statement + ' (' + ISNULL(mid.equality_columns,'') +       (CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ', ' ELSE '' END) +       (CASE WHEN mid.inequality_columns IS NOT NULL THEN + mid.inequality_columns ELSE '' END) +       ')' +       (CASE WHEN mid.included_columns IS NOT NULL THEN ' INCLUDE (' + mid.included_columns + ')' ELSE '' END) +       [Количество операций поиска] = migs.user_seeks,       [Количество операций просмотра] = migs.user_scans,       [Средняя стоимость ] = CAST(migs.avg_total_user_cost AS int),       [Средний процент выигрыша] = CAST(migs.avg_user_impact AS int) FROM  sys.dm_db_missing_index_groups mig JOIN  sys.dm_db_missing_index_group_stats migs ON    migs.group_handle = mig.index_group_handle JOIN  sys.dm_db_missing_index_details mid     FETCH NEXT FROM DBases GO SELECT * FROM ##IndexAdvantage ORDER BY 1 DESC -- Значение ''Преимущество индекса'' выше 5000 в промышленных системах означает, что следует рассмотреть возможность создания этих индексов. -- Если же значение превышает 10000, это обычно означает, что индекс может обеспечить значительное повышение производительности для операций чтения. -------------------------------------------------------------------------------------------- IF (object_id('tempdb..##IndexAdvantage2') IS NOT NULL) DROP TABLE ##IndexAdvantage2 SELECT * FROM ##IndexAdvantage WHERE [Преимущество индекса] >= 5000 ORDER BY 1 DESC Стырено с инфорстарта, кажется. Про регламентные процедуры статей куча, в гугле "регламентные процедуры sql 1с".
#8 by Альбатрос
ну я хз, это мне админ так говорил, а это из ИД оборудования, единственное, на что у меня есть права посмотреть
#9 by shuhard_серый
подними регламенты и начни с того, фулл у тебя в бэкапе или симпл, где темп сидит и далее по списку
#10 by Fragster
отладка на сервере включена? разбей строку из на две - одна для получения ТЗ из движений, другая для выполнения процедуры общего модуля
#11 by Альбатрос
Отладка на сервере отключена. Строки разбил, получение ТЗ из движения не занимает времени, что тормозит в общем модуле - посмотреть не могу.
#12 by Альбатрос
в бэкапе симпл
#13 by Fragster
так включи отладку на сервере, бро. наверняка тормозит один запрос, который банальным выносом виртуальных таблиц из соединения во временные, а потом уже соединение со временными таблицами ускорится раз в пять.
#14 by vde69
для начала - регламенты!!! обновление статистики и индексы... дальше несколько дней ждать и если все будет плохо - писать сюда
#15 by Альбатрос
регламенты есть только по индексам, обновление статистики добавил и сразу провел на проблемной базе - результат 0.
#16 by Альбатрос
Эффект будет только через несколько дней? ))))
#17 by Альбатрос
Это в реестр лезть надо?
#18 by dmrjan
Как вариант - поднять базу на PostgreSQL, которая в отличие от MSSQL не жрет всю память и при правильных запросах в 1с  почти не блокирует данные на чтение. И посмотреть - если оперативки не станет хватать, значит дело в некорректных запросах. Я в свое время на Linux с помощью Htop выявил некорректный запрос.
#19 by Альбатрос
Да, такая мысль тоже была, спасибо. Вечером подключим отладку на сервере, регламентные я поднял. осмотрим короче...
#20 by H A D G E H O G s
1. Регламенты. 2. Переписать партионное списание на годный код. 3. Реализовать управляемые блокировки. Но так как nobody_cares, то все останется как есть.
#21 by floody
+146%, соник дело говорит
#22 by ДенисЧ
"поднять базу на PostgreSQL, которая в отличие от MSSQL не жрет всю память и при правильных запросах в 1с  почти не блокирует данные на чтение"
#23 by ILM
Подробнее можно по п.2? Можно на почту.
#24 by ILM
+ да и по п.3 интересно. Так как пишут многие, а реализаций не видел.
#25 by Lamer1C
попробуй статистику обновить. проверь. потом индексы перестроить, если 1 не поможет. а так причин может быть очень много...
#26 by Fragster
например древний релиз УТ, в котором соединяются виртуальные таблицы
#27 by Drac0
проверь в настройках скуля Max degree of parallelism (DOP). Скинь в 0 и проверь.
#28 by Lamer1C
для MS SQL Server лучше наоборот 1 ставить.
#29 by Lamer1C
точнее для баз 1С
#30 by Drac0
Я точно не помню. Просто была непонятная фигня со сложным запросом: вплоть до вешанья сервака. Оказалось, что в DOP было дикое число, скуль паралеллил и сам потом развлекался с этими потоками, ни на что больше не реагируя :)
#31 by Lamer1C
ну тогда  точно в 0 ставил :) это параметр отвечает за распараллеливание операций для многоядерных процессоров: 0 - это неограниченно
#32 by Lamer1C
т.е. в 1 ))
#33 by orangekrs
Ну да, в остальными базами всё ок. Тем не менее, а что показывает тест гилева ?
#34 by orangekrs
А, шаг увеличения тмп файла у скл увеличен ? (по умолчанию он 1мб)
#35 by Kvant1C
Посмотри какое приращение установлено для базы данных, если оно слишком маленькое, то возможно, что сервер только и занимается приращением бд при каждом добавлении записей, отсюда и тормоза могут быть
#36 by H A D G E H O G s
Скинул на почту
#38 by Альбатрос
Max degree of parallelism (DOP) значение 1 У меня такая проблема, при добавлении строчки -debug у меня перестает запускаться агент на сервере. Вот такая ошибка, это мне админ прислал: Компьютер:     1CSERVER.kom-kastor.local Описание: Параметры разрешений для конкретного приложения не дают разрешения Локальный Активация для приложения COM-сервера с CLSID {BA126AD1-2166-11D1-B1D0-00805FC1270E} пользователю 1CSERVERUSR1CV82 с SID (S-1-5-21-4102014034-2086728852-1080897402-1002) и адресом LocalHost (с использованием LRPC). Это разрешение безопасности можно изменить с помощью служебной программы управления службами компонентов. Xml события: <Event xmlns="; Я так понимаю, там что-то с настройками безопасности. Админ комментариев не дает. Подскажите, что не так?
#39 by Альбатрос
для вроде вот решение, вечером только проверим
#40 by Альбатрос
увеличил до 200 - по фигу... для журнала тоже
#41 by vde69
для 8 лучше ставить 0, это для 7.7 надо ставить 1
#42 by Альбатрос
вернул обратно на ноль
#43 by Альбатрос
sql server 2008 r2 best practices analyzer ничего страшного не выяснил
#44 by leonidkorolev
Я бы посмотре что внутри этой процедуры тормозит.
#45 by Альбатрос
для этого надо отладку на сервере включить, а это не получается пока
#46 by Гёдза
без этого дальнейший разговор бессмысленный. Может там блокировки идут
#47 by leonidkorolev
Ну ок. Можно в профайлере посмотреть что происходит на скуле в момент выполнения этой процедуры. Поставь точку останова на процедуру, перед выполнение запусти профайле и смотри самые тяжелые запросы.
#48 by vde69
сделай ...
#49 by Альбатрос
Я несколько хз, где это запускать :))) И не понял, что конкретно этот скрипт делает. Буду рад пояснениям )))
#50 by vde69
запускать в скуле, скрипт выводит статистику ожидания блокировок (показывает слабые места)
#51 by Альбатрос
Этот скрипт будет 5 часов мониторить при первом значении в 300?
#52 by vde69
да
#53 by Альбатрос
Поставил на 5 минут и начал проведение проблемного документа, жду...
#54 by Klesk666
+ прогони тест Гилева
#55 by Kvant1C
Проверь размер приращения БД, вот полезная статья на эту тему: не поленись прочитать
#56 by Альбатрос
Таааак, а результат в мс?
#57 by Klesk666
какая конфигурация дисковой системы?
#58 by vde69
там в % куда нагляднее... нормально когда запись и чтение диска занимает 5-15%
#59 by Альбатрос
Ок, спасибо. Щас после оценки результата из займусь
#60 by Klesk666
может админы все на один диск запихали
#61 by Альбатрос
LAZYWRITER_SLEEP процент  = 25
#62 by slavikzzz
вот еще статья по оптимизации + делали пересчет итогов
#63 by Альбатрос
Рейд массив там вроде как. А так да, все на одном диске
#64 by vde69
запускать на менее часа смысла нет...
#65 by Альбатрос
Надо ведь и нагрузку тогда обеспечить на проблемную базу для хорошего результата, не?
#66 by Kvant1C
Кстати на счет дисков, был такой случай когда проблемы на новом сервере были связаны именно с дисками, был косяк с контроллером, после настройки проблема ушла. В общем не лишне саму дисковую подсистему проверить на скорострельность.
#67 by Альбатрос
Ну как бэ я не могу это сделать, а сисадмин по-любому скажет, что все норм и проверять не надо.
#68 by Kvant1C
Попробуй бэкап свернуть/развернуть
#69 by Klesk666
а не проблемные базы типовые?
#70 by vde69
запускать нужно на рабочем сервере во время обычной работы юзеров... никаких эмуляторов, перепроведений и т.д. там анализируется например время отклика клиента и т.д. то есть ситема в целом а не сервер
#71 by Kvant1C
>>сисадмин по-любому скажет, что все норм и проверять не надо ну тогда скажи ему чтобы он со скулем тогда сам боролся...
#72 by Альбатрос
да, и все обновленные до последнего релиза. А проблемная это "Управление торговлей", редакция 10.3 (10.3.18.3) Ну он заявит что проблема в самой базе. При этом его заявление будет выглядеть логичным, ведь остальные базы не тормозят. Запустил на час без нагрузки, кроме обычной
#73 by Kvant1C
Ну тогда проблемы с диском можно отмести.
#74 by Альбатрос
Размер прироста выставлен в 200 мб при базе в 9гб. Судя по статье - норм показатель.
#75 by Гёдза
один работаешь или нет? Может регламент какой блокировки накладывает?
#76 by Гёдза
Если только с этой базой так на этом сервере, то очень вероятно что именно они
#77 by Klesk666
это если база располагается также как остальные
#78 by Альбатрос
Нет, не один. На протяжении рабочего дня регламентов нет.
#79 by dmrjan
Попробуй в MSSQL включить регулятор запросов, и поставь 2000-10000, документы будет проводится быстрее, а вот кто больше всего начнет кричать, у того и смотри. Обычно отчеты сами начинают ругаться на этот параметр.
#80 by dmrjan
Начни с 2000.
#81 by Альбатрос
Это не скажется на работе других баз?
#82 by dmrjan
Если скажется, значит не все в порядке с другими базами. Но это не смертельно, всегда можно отключить это значение. Или поменять.
#83 by dmrjan
Кстати - какой у тебя размер tempdb?
#84 by Kvant1C
Модель восстановления какая устновлена, full или simple? Если full, то поменяй на simple.
#85 by Альбатрос
Simple
#86 by Альбатрос
Где посмотреть? ))))
#87 by dmrjan
В системных базах данных
#88 by vde69
да не мечись... надо делать все по порядку, иначе на одни результаты будут наслаивается твои эксперименты... оптимизация - она не быстрая... сделал проверил подумал, потом снова можно делать
#89 by Зеленый пень
Тогда сделай копию базы, там у модуля поставь галку "клиент" и отлаживай.
#90 by dmrjan
Может проблема в том, что в файловой версии было прописано, что процедура выполняется локально, а нужно на сервере? Посмотри - при проведении - сколько у тебя грузится сеть.
#91 by Альбатрос
Ошибки валятся про мутабельные значения
#92 by Альбатрос
Тест ничего особо не показал, кроме LAZYWRITER_SLEEP, у нее 21 %, все остальные не превышают 12 Может все-таки нагрузить ее?
#93 by Альбатрос
Но ведь тогда замер бы на нее сработал, нет?
#94 by Альбатрос
Tempdb = 8мб, прирост 10%
#95 by Альбатрос
+ ghjcnj ,fpf ctqxfc vj;tn ,snm yt jcj,j yfuhe;tyf gjkmpjdfntkzvb
#96 by Альбатрос
+ просто база сейчас может быть вообще не нагружена пользователями
#97 by 0wl
Получается, сервер недавно перезагружал? Для tempdb это очень маленький размер, поставь изначальный размер хотябы Мб 500, иначе постоянно будут блокировки на расширении файла данных. И я пропустил, индексы уже перестраивал? Если нет, запусти на ночь, днем перестроение индексов помешает работе пользователей
#98 by Альбатрос
Индексы регламентом перестраиваются в воскресенье - не помогло... Сервер перегружали сегодня ночью.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С