上位の待機イベントを表示
Oracle
SELECT event, total_waits, time_waited, ROUND(time_waited/100,2) AS sec_waited
FROM v$system_event
WHERE wait_class <> 'Idle'
ORDER BY time_waited DESC
FETCH FIRST 20 ROWS ONLY;
-- For real-time analysis: v$active_session_history (ASH)v$system_event は累積の待機イベントを、v$active_session_history は直近数分間のアクティブセッションのサンプリングを提供する(Diagnostics Pack のライセンスが必要)。
PostgreSQL
SELECT wait_event_type, wait_event, count(*)
FROM pg_stat_activity
WHERE wait_event IS NOT NULL AND state = 'active'
GROUP BY 1, 2
ORDER BY 3 DESC;pg_stat_activity は現在の待機状態を示す。繰り返しサンプリング(ポーリング)すると最も頻繁な待機イベントが分かる。
MySQL
SELECT event_name, count_star, sum_timer_wait,
ROUND(sum_timer_wait/1000000000000, 2) AS sec_waited
FROM performance_schema.events_waits_summary_global_by_event_name
WHERE count_star > 0
ORDER BY sum_timer_wait DESC
LIMIT 20;events_waits_summary_global_by_event_name はイベントごとの合計待機時間(ピコ秒単位)を示す。待機のインストルメントを有効にする必要がある。
SQL Server
SELECT wait_type, waiting_tasks_count, wait_time_ms,
signal_wait_time_ms, wait_time_ms - signal_wait_time_ms AS resource_wait_ms
FROM sys.dm_os_wait_stats
WHERE wait_time_ms > 0
ORDER BY wait_time_ms DESC;sys.dm_os_wait_stats はインスタンス起動以降の累積の待機タイプを示す。DBCC SQLPERF でリセットできる。
MongoDB
db.serverStatus().wiredTiger.concurrentTransactions
// For general waits/congestion:
// db.serverStatus().globalLock and db.serverStatus().wiredTiger.cacheWiredTiger には従来の待機イベントがない。concurrentTransactions(チケット)の枯渇、globalLock.currentQueue、キャッシュ圧迫が輻輳を示す。
Redis
CONFIG SET latency-monitor-threshold 100
LATENCY LATEST
LATENCY HISTORY command
# For the slowest commands: SLOWLOG GET 10latency monitor のしきい値を設定すると、LATENCY LATEST/HISTORY が最も大きなレイテンシを引き起こしているイベントを報告する。
Elasticsearch
GET _nodes/hot_threads_nodes/hot_threads は CPU を最も消費しているスレッドのスタックトレースを示し、ボトルネックを明らかにする。