Skip to main content

Cek Konsumsi CPU Mysql

Siap bro ๐Ÿ”ฅ
Ini gue bikinkan versi Knowledge Base (KB) / SOP Managed Service yang bisa langsung lo pakai.


โœ…๐Ÿ“˜ 1๏ธโƒฃKnowledge Base

Cara PalingMengidentifikasi CepatQuery (Productionyang Friendly)

Mengkonsumsi

GunakanCPU Performance Schema (Summary View)

Kalaudi MySQL 5.7(Azure /& 8.0On-Prem) biasanya


sudah

๐ŸŽฏ aktif.

Objective

JalankanMengidentifikasi ini:query yang menyebabkan CPU usage tinggi pada MySQL server, baik:

SELECT 
    DIGEST_TEXT,
    COUNT_STAR,
    ROUND(SUM_TIMER_WAIT/1000000000000,2) AS total_sec,
    ROUND(AVG_TIMER_WAIT/1000000000000,4) AS avg_sec
FROM performance_schema.events_statements_summary_by_digest
ORDER BY SUM_TIMER_WAIT DESC
LIMIT 10;

Penjelasan:

  • DIGEST_TEXTAzure โ†’Database bentukfor MySQL (PaaS)

  • MySQL VM / On-Prem


๐Ÿง  Konsep Penting

CPU tinggi biasanya disebabkan oleh:

  • Long running query

  • COUNT_STARFull โ†’table berapa kali dijalankanscan

  • total_secMissing โ†’ total waktu eksekusi (indikasi konsumsi CPU)index

  • avg_secQuery โ†’concurrency rata-ratatinggi waktu(query perstorm)

    eksekusi
  • Temporary table besar

  • Sorting besar tanpa index


๐Ÿ” STEP 1 โ€” Konfirmasi CPU Spike (Azure)

Jika Menggunakan Azure Database for MySQL

1๏ธโƒฃ Login ke Azure Portal
2๏ธโƒฃ Masuk ke resource Azure Database for MySQL
3๏ธโƒฃ Klik Metrics
4๏ธโƒฃ Tambahkan metric berikut:

  • CPU percent

  • Active connections

  • IO percent

  • Memory percent

๐Ÿ‘‰๐Ÿ“Œ QueryPerhatikan:

paling
    atas
  • =

    Apakah kandidatCPU terbesarspike penyedotterjadi CPU.tiba-tiba (burst)?

  • Apakah spike sejalan dengan kenaikan Active Connections?


โœ…๐Ÿ”Ž 2๏ธโƒฃSTEP 2 โ€” Cek Query YangAktif Sedang Jalan Sekarang(Real-Time)

Kalau CPU lagi tinggi sekarang:Jalankan:

SHOW FULL PROCESSLIST;

Atau lebih rapi:fokus:

SELECT *
FROM information_schema.PROCESSLIST
WHERE COMMAND != 'Sleep'
ORDER BY TIME DESC;

Perhatikan:

  • Lihat:Query dengan TIME > 10 detik

  • State seperti:

    • Sending data

    • Copying to tmp table

    • Locked

    • Sorting result

๐Ÿ“Œ Jika ada query dengan TIME besar โ†’ kemungkinan penyebab CPU.


๐Ÿ”ฅ STEP 3 โ€” Cek Concurrency Level

Jalankan:

SHOW GLOBAL STATUS LIKE 'Threads_running';

Interpretasi umum:

Threads_runningKondisi
1โ€“5Normal
5โ€“10Medium
10โ€“30High
>30Critical

Jika tinggi bersamaan dengan CPU spike โ†’ concurrency overload.


๐Ÿ”Ž STEP 4 โ€” Cek Jumlah Query per Detik (Detect Query Storm)

Jalankan:

SHOW GLOBAL STATUS LIKE 'Queries';

Catat nilai.

Tunggu 5 detik, jalankan lagi.

Hitung selisih:

(Query2 - Query1) / 5 = QPS (Queries Per Second)

Jika QPS sangat tinggi โ†’ kemungkinan query storm.


๐Ÿ“Š STEP 5 โ€” Gunakan Performance Schema (Paling Akurat)

Jalankan:

SELECT 
    DIGEST_TEXT,
    COUNT_STAR,
    ROUND(SUM_TIMER_WAIT/1000000000000,2) AS total_seconds,
    ROUND(AVG_TIMER_WAIT/1000000000000,4) AS avg_seconds
FROM performance_schema.events_statements_summary_by_digest
ORDER BY SUM_TIMER_WAIT DESC
LIMIT 10;

Ini akan menampilkan:

  • Query lamapaling jalansering dijalankan

  • StatusQuery "Sendingpaling data"banyak lamamenghabiskan waktu CPU

  • BanyakTotal querywaktu samaeksekusi berjalan paralelkumulatif

๐Ÿ“Œ Ini metode paling efektif untuk investigasi CPU.


โœ…๐Ÿงจ 3๏ธโƒฃSTEP Aktifkan6 โ€” Cek Slow Query Log (Kalau Belum Aktif)

Ini penting banget buat monitoring berkelanjutan.

Cek dulu:

apakah slow query aktif:

SHOW VARIABLES LIKE 'slow_query_log';

KalauJika OFF, aktifkan:

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;  -- misalnya >2 detik

Cek lokasi file:ON:

SHOW VARIABLES LIKE 'slow_query_log_file'long_query_time';

LaluQuery analisayang dengan:lebih lama dari nilai tersebut akan masuk slow log.


๐Ÿ“ˆ STEP 7 โ€” Cek Connection Pressure

mysqldumpslowSHOW /path/to/slow.logGLOBAL STATUS LIKE 'Threads_connected';
SHOW GLOBAL STATUS LIKE 'Max_used_connections';
SHOW VARIABLES LIKE 'max_connections';

AtauJika lebihMax_used_connections bagusmendekati pakai:

max_connections
pt-query-digestโ†’ slow.logconnection 

(tool dari Percona ๐Ÿ”ฅ sangat powerful)pressure.


โœ…๐Ÿง  4๏ธโƒฃSTEP Cara8 Lebihโ€” DetailInterpretasi (TopHasil

Kondisi 1 โ€” CPU Consumer)

Tinggi + Threads_running Tinggi

Kalau๐Ÿ‘‰ mauQuery lihatconcurrency berdasarkan total waktu eksekusi paling besar:overload.

SELECT

Kondisi SCHEMA_NAME,2 DIGEST_TEXT,โ€” COUNT_STAR,CPU ROUND(SUM_TIMER_WAIT/1000000000000,2)Tinggi AS+ total_exec_time_secQuery FROMTIME performance_schema.events_statements_summary_by_digestbesar

ORDER

๐Ÿ‘‰ BYAda SUM_TIMER_WAITlong-running DESCquery.

LIMIT

Kondisi 5;3

โ€” CPU Tinggi + QPS Tinggi

๐Ÿ‘‰ Query storm.

Kondisi 4 โ€” CPU Tinggi + IO tinggi

๐Ÿ‘‰ Disk bottleneck.

Kondisi 5 โ€” Semua normal tapi CPU spike

๐Ÿ‘‰ Burst query singkat atau background maintenance.


๐ŸŽฏ๐Ÿ“Œ CaraChecklist AnalisaInvestigasi HasilnyaCepat (Ringkas)

Biasanya pola yang bikinSaat CPU tinggi:spike terjadi:

  1. โŒSHOW QueryFULL tanpa indexPROCESSLIST

  2. โŒSHOW SELECTGLOBAL *STATUS dariLIKE tabel besar'Threads_running';

  3. โŒCek JOIN tanpa indexQPS

  4. โŒ Query dipanggilPerformance ribuanSchema kali (meskipun cepat)digest

  5. โŒCek ORDERAzure BY tanpa index

  6. โŒ LIKE '%keyword%' (leading wildcard)Metrics


๐Ÿš€๐Ÿงพ LangkahKesimpulan Setelah Ketemu Query

Misalnya ketemu ini:

COUNT_STAR: 147452
total_sec: 415707.65

Artinya:

  • Query dipanggil 147 ribu kali

  • Total waktu eksekusi 415 ribu detik

  • Ini jelas heavy consumer ๐Ÿ”ฅ

Selanjutnya:

EXPLAIN ANALYZE <query>;

Lihat:

  • type: ALL โ†’ full table scan โŒ

  • rows: besar banget โŒ

  • possible_keys: NULL โŒ

Kalau mau, kirim hasil:

  • DIGEST_TEXT

  • COUNT_STAR

  • total_sec

Nanti gue bantu analisa sebagai sudut pandangStandar Managed Service biar

bisa

CPU kamuspike laporkaninvestigation profesionalshould kefocus clienton ๐Ÿ‘active queries, concurrency level, and query execution summary from Performance Schema.
Snapshot analysis must be performed during the spike window to accurately identify the root cause


Kalau boleh tau bro:
MySQL versi berapa?
Running di Azure VM kan ya? CPU berapa core?

Biar gue kasih strategi optimasi yang paling tepat ๐Ÿ”ฅ