Здравствуйте, имеется сервер мощный/производительный (надо будет харакетеристики - напишу), win 2012, MSSQL 2008, 1С сервер 64 бит 8.3.11.3034 (все лицензии), простенькая самописная конфа (3 справочника, 1 документ, регистров нет, проводок нет ну не в этом дело). Еще крутятся типовая ЗУП и БП.
Есть отчеты более 10, простые по 1 справочнику, сложные с выборкой/соединением вложенных таблиц.
До вчерашнего дня (16.05.2018) сказать что "летала" - ничего не сказать, просто нереально моментально все отрабатывало.
Вчера же что-то случилось и часть отчетов стала грузить систему под 100% (sqlservr.exe - 99%, Бездействие 1%).
Сделал: ТИИ - все ок, chckdb - все ок, сисадмины - систему/жесткие - все ок.
Куда еще копать?
(2)
1) сис админы говорят обновилась винда, но как уж на скуль и 1С может повлиять?
2) нет нормально, только в самописной вдруг сломалось, 5 лет полет нормальный =), 350 мб весит - просто база с Подарочными сертификатами.
3) именно в ней отчет по смене статуса валит весь сервер, причем таблица с документами для отчета - не битая, по карйней мере ни ТИИ ни DBCC CHECKDB проблем не выявили.
(9)один из жестких сдыхал (хз как и почему в скуле и ТИИ не было проблем, и от разных сканеров работы рейда не было предупреждений). Поменяли, отзеркалилось - все ок стало. Теперь с сис.админа полторашка пива =)
Top запросов, создающих нагрузку на CPU на сервере СУБД за последний час
SEL ECT
SUM(qs.max_elapsed_time) as elapsed_time,
SUM(qs.total_worker_time) as worker_time
into T1 FR OM (
sel ect top 100000
*
fr om
sys.dm_exec_query_stats qs
wh ere qs.last_execution_time > (CURRENT_TIMESTAMP - '01:00:00.000')
order by qs.last_execution_time desc
) as qs
;
select top 10000
(qs.max_elapsed_time) as elapsed_time,
(qs.total_worker_time) as worker_time,
qp.query_plan,
st.text,
dtb.name,
qs.*,
st.dbid
INTO T2
FR OM
sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
left outer join sys.databases as dtb on st.dbid = dtb.database_id
wh ere qs.last_execution_time > (CURRENT_TIMESTAMP - '01:00:00.000')
order by qs.last_execution_time desc
;
select top 100
(T2.elapsed_time*100/T1.elapsed_time) as percent_elapsed_time,
(T2.worker_time*100/T1.worker_time) as percent_worker_time,
T2.*
fr om
T2 as T2
INNER JOIN T1 as T1
ON 1=1
order by T2.worker_time desc
;
dr op table T2
;
dr op table T1
;