DBA nie restartuje — DBA diagnozuje

2026-10-13 · 2 min

Restart usługi bywa skuteczny.

Problem polega na tym, że usuwa wiele śladów potrzebnych do ustalenia przyczyny.

Pierwsza zasada

Najpierw zabezpiecz dane diagnostyczne. Potem podejmuj działania naprawcze.

Pierwsze pięć minut

Ustal:

  • co dokładnie nie działa,
  • od kiedy,
  • czy problem dotyczy jednej bazy czy całej instancji,
  • czy wystąpiła zmiana,
  • jaki jest wpływ biznesowy.

Aktywne żądania

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
SELECT
    r.session_id,
    r.status,
    r.command,
    DB_NAME(r.database_id) AS DatabaseName,
    r.blocking_session_id,
    r.wait_type,
    r.wait_time,
    r.cpu_time,
    r.logical_reads,
    r.writes,
    r.total_elapsed_time,
    t.text
FROM sys.dm_exec_requests AS r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE r.session_id <> @@SPID
ORDER BY r.total_elapsed_time DESC;

Blokowanie

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
SELECT
    r.session_id,
    r.blocking_session_id,
    r.wait_type,
    r.wait_time,
    r.wait_resource,
    t.text
FROM sys.dm_exec_requests AS r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE r.blocking_session_id <> 0
ORDER BY r.wait_time DESC;

Nie zabijaj sesji tylko dlatego, że blokuje inne. Najpierw sprawdź transakcję i koszt rollbacku.

CPU

1
2
3
4
5
6
7
8
SELECT
    scheduler_id,
    current_tasks_count,
    runnable_tasks_count,
    active_workers_count,
    load_factor
FROM sys.dm_os_schedulers
WHERE status = N'VISIBLE ONLINE';

Pamięć

1
2
3
4
5
6
7
SELECT
    physical_memory_in_use_kb / 1024 AS SqlMemoryUsedMB,
    locked_page_allocations_kb / 1024 AS LockedPagesMB,
    memory_utilization_percentage,
    process_physical_memory_low,
    process_virtual_memory_low
FROM sys.dm_os_process_memory;

Ostatnie zmiany

Sprawdź wdrożenia, patching, failover, zmianę konfiguracji, nowe obciążenie i wzrost danych.

Kiedy restart jest uzasadniony?

Gdy jest częścią zatwierdzonego runbooka, alternatywy są bardziej ryzykowne, a dane diagnostyczne zostały zebrane.

Restart jest działaniem operacyjnym, nie diagnozą.

Podsumowanie

Spokojny DBA nie pyta najpierw:

Czy restart pomoże?

Pyta:

Co stracę diagnostycznie i czy rozumiem przyczynę problemu?


Tagi: SQLServer , Troubleshooting , IncidentResponse , DBA , Monitoring

Marcin Pytlik
LinkedIn · GitHub

Marcin Pytlik

LinkedIn · GitHub