SQL-сервер внезапно завис - все соединения с БД активны, но ответа нет.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 SQL-сервер внезапно завис - все соединения с БД активны, но ответа нет.

Сообщение Anonymous »

Я пытаюсь выяснить, почему наш SQL-сервер внезапно завис, и после перезапуска он стал нормальным
Симптомы:
< ul>
[*]Потоки Java начали зависать, выяснилось, что соединения Java JDBC начали зависать без какого-либо ответа от БД, что приводило к зависанию потоков
[*]Все соединения (около 100) были активны до перезапуска SQL-сервера. Наконец, соединения с БД были закрыты БД после перезапуска. Получено соединение Java JDBC «Сброс соединения по одноранговому узлу» ПОСЛЕ перезапуска БД


Продолжительность воздействия: 5 часов (до перезапуска)
Технический стек:
  • Весенняя загрузка Java, работающая на weblogic. ORM: спящий режим
  • SQL server 2016
Ограничение:
Команда мы перезапустили SQL-сервер до того, как мы смогли экспортировать какую-либо статистику из БД, и даже сомневаемся, сможем ли мы выполнить статистические SQL-запросы до перезапуска SQL-сервера, поскольку БД уже зависла.
Выводы /actions:
После перезапуска БД я попытался извлечь статистику из dm_exec_query_stats, однако она отслеживает запросы только на основе времени последнего выполнения. За пораженный период результата не было. Тот же сценарий и для dm_os_waiting_tasks.
Команда сервера сообщает, что загрузка ЦП и памяти была нормальной (мне еще предстоит получить полный отчет).
Можно посмотреть никаких ошибок/проблем в журнале событий Windows и журналах кластера нет. Они выглядят нормально
Некоторые источники Google сообщают, что некоторые запросы могут полностью загружать процессор, что может привести к зависанию SQL-сервера, другие говорят, что некоторые запросы могли блокироваться.
Это может показаться простым или обычным для экспертов по SQL-серверу/администраторов баз данных, однако я погуглил, чтобы найти соответствующую проблему и решение, однако, похоже, они не помогли
Пробовал эти запросы, но безуспешно
SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query], dbid, deqs.*
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
where deqs.last_execution_time between '2020-09-29 13:16:52.710' and '2020-09-29 23:16:52.710'
ORDER BY deqs.last_execution_time DESC ;

SELECT
qs.sql_handle,
qs.execution_count,
qs.total_worker_time AS Total_CPU,
total_CPU_inSeconds = --Converted from microseconds
qs.total_worker_time/1000000,
average_CPU_inSeconds = --Converted from microseconds
(qs.total_worker_time/1000000) / qs.execution_count,
qs.total_elapsed_time,
total_elapsed_time_inSeconds = --Converted from microseconds
qs.total_elapsed_time/1000000,
st.text,qs.query_hash,
qp.query_plan
FROM
sys.dm_exec_query_stats AS qs
CROSS APPLY
sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS APPLY
sys.dm_exec_query_plan (qs.plan_handle) AS qp
where qs.last_execution_time between '2020-09-29 13:16:52.710' and '2020-09-29 23:16:52.710'
ORDER BY
qs.total_worker_time DESC;

--View waiting tasks per connection
SELECT st.text AS [SQL Text], c.connection_id, w.session_id,
w.wait_duration_ms, w.wait_type, w.resource_address,
w.blocking_session_id, w.resource_description, c.client_net_address, c.connect_time
FROM sys.dm_os_waiting_tasks AS w
INNER JOIN sys.dm_exec_connections AS c ON w.session_id = c.session_id
CROSS APPLY (SELECT * FROM sys.dm_exec_sql_text(c.most_recent_sql_handle)) AS st
WHERE w.session_id > 50 AND w.wait_duration_ms > 0
ORDER BY c.connection_id, w.session_id
GO

-- View waiting tasks for all user processes with additional information
SELECT 'Waiting_tasks' AS [Information], owt.session_id,
owt.wait_duration_ms, owt.wait_type, owt.blocking_session_id,
owt.resource_description, es.program_name, est.text,
est.dbid, eqp.query_plan, er.database_id, es.cpu_time,
es.memory_usage*8 AS memory_usage_KB
FROM sys.dm_os_waiting_tasks owt
INNER JOIN sys.dm_exec_sessions es ON owt.session_id = es.session_id
INNER JOIN sys.dm_exec_requests er ON es.session_id = er.session_id
OUTER APPLY sys.dm_exec_sql_text (er.sql_handle) est
OUTER APPLY sys.dm_exec_query_plan (er.plan_handle) eqp
WHERE es.is_user_process = 1
ORDER BY owt.session_id;
GO;


Подробнее здесь: https://stackoverflow.com/questions/642 ... o-response
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»