Buku Panduan SRE Linux: Penyelesaian Masalah CPU Tinggi Secara Sistematik
Senario
Dalam persekitaran pengeluaran, penggunaan CPU yang tinggi adalah isu biasa yang kritikal yang boleh menyebabkan kelewatan aplikasi dan kemerosotan perkhidmatan. Sebagai SRE, anda memerlukan pendekatan berstruktur untuk mendiagnosis dan mengurangkan puncak CPU tanpa menyebabkan gangguan lanjut. Buku panduan ini merangkumi langkah-langkah penting untuk menyelesaikan masalah CPU tinggi pada pelayan Linux.
Gejala
- Amaran pemantauan: Penggunaan CPU melebihi ambang (cth., >90% selama 5 minit).
- Aduan pengguna: Masa tindak balas aplikasi meningkat; pengguna mengalami tamat masa.
- Metrik sistem: Dalam
topatauhtop, %idle sangat rendah, purata beban melebihi bilangan teras CPU, dan senarai proses menunjukkan penggunaan CPU yang tinggi.
Diagnosis
- Kenal pasti proses yang menggunakan CPU paling tinggi: Jalankan
ps aux --sort=-%cpu | head -20untuk menyenaraikan proses mengikut penggunaan CPU. Catat PID, %CPU, dan perintah. - Periksa pecahan CPU seluruh sistem: Gunakan
mpstat -P ALL 1 3untuk melihat penggunaan setiap teras dan kenal pasti jika satu teras digunakan sepenuhnya (cth., disebabkan oleh kernel atau pengendalian gangguan). - Bezakan masa pengguna vs kernel:
vmstat 1 5menunjukkan lajurus(pengguna) dansy(sistem).sytinggi menunjukkan aktiviti peringkat kernel (panggilan sistem, gangguan). - Periksa I/O menunggu:
watinggi dalamvmstatatauiostat -x 1menunjukkan CPU menunggu I/O. Ini boleh menyamar sebagai ketepuan CPU. - Lihat butiran peringkat benang: Untuk PID tertentu,
top -H -p <PID>ataups -Lp <PID> -o pid,tid,%cpu,commmendedahkan benang yang menyebabkan masalah. - Jejak panggilan sistem (lanjutan): Gunakan
strace -c -p <PID>untuk melihat kiraan panggilan sistem, tetapi hanya jika anda mempunyai kebenaran dan impak adalah minimum. Lebih baik gunakanperf top -p <PID>untuk pensampelan.
Perintah (dengan nota keselamatan)
# Selamat: senaraikan proses paling tinggi CPU tanpa mengubahsuai keadaan
ps aux --sort=-%cpu | head -20
# Pemantauan berkala selamat (kurang invasif)
top -b -d 5 -n 10
# Pecahan CPU setiap teras (selamat)
mpstat -P ALL 1 3
# Periksa letusan penciptaan proses (gunakan execsnoop dari perf-tools jika ada)
execsnoop -T
# Untuk mengurangkan kesan CPU proses tertentu (guna dengan berhati-hati):
# Rendahkan keutamaan:
renice +10 -p <PID>
# Nota: renice mungkin tidak memberi kesan ketara pada proses yang banyak menggunakan CPU jika ia intensif pengiraan.
# Bunuh proses hanya jika disahkan tidak kritikal dan selepas kelulusan:
# kill -9 <PID> # Elakkan kecuali perlu sangat
# Jika anda mengesyaki gelung tak terhingga dalam Java/Python, hasilkan dump benang:
# kill -3 <PID> # hantar SIGQUIT ke JVM
Kawalan Risiko
- Sahkan sebelum membunuh: Gunakan
systemctl status <service>atau rujuk papan pemantauan untuk memahami peranan proses. - Dokumen tindakan: Catat setiap perintah dan pemerhatian untuk analisis selepas kejadian.
- Elakkan strace/perf dalam pengeluaran melainkan pasukan mempunyai kelulusan jelas dan alat beban rendah (cth.,
perf record -F 99 -p <PID> -g -- sleep 10selamat untuk jangka pendek). - Sediakan amaran untuk CPU untuk menangani corak secara proaktif.
Pengembalian
- Jika anda membunuh proses kritikal, mulakan semula dengan segera:
systemctl start <service>. - Jika anda menukar nice kepada nilai, kembalikan kepada asal:
renice 0 -p <PID>. - Jika anda menggunakan perubahan konfigurasi sementara, kembalikan perubahan tersebut.
Pengesahan
- Selepas mitigasi, pantau penggunaan CPU selama 5-10 minit menggunakan
topatau alat pilihan. - Periksa titik akhir kesihatan aplikasi (cth.,
/healthz). - Pastikan purata beban turun di bawah bilangan teras CPU.
- Sahkan metrik lain (memori, I/O cakera) tidak terjejas.
Bila Perlu Serahkan Tiket OpsGlobal
- Jika CPU masih tinggi selepas mitigasi asas (renice, mulakan semula).
- Jika punca tidak jelas (cth., pepijat kernel, ribut gangguan perkakasan).
- Jika isu memerlukan profil kod atau perubahan pada logik aplikasi.
- Jika anda memerlukan SRE dengan pengetahuan kernel Linux yang lebih mendalam atau sokongan vendor.
OpsGlobal menyediakan bantuan SRE jauh 24/7 untuk mendiagnosis dan menyelesaikan isu pengeluaran kompleks, membantu pasukan anda mengekalkan ketersediaan tinggi.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu DevOps dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan praktikal untuk SRE mendiagnosis dan menyelesaikan penggunaan CPU tinggi pada pelayan Linux pengeluaran, dengan langkah demi langkah perintah, kawalan keselamatan, dan prosedur pengembalian.
Langkah Penyelesaian
Sahkan impak dan perubahan terkini, kumpul log, konfigurasi dan metrik, kemudian baiki mengikut risiko.
Contoh Arahan
Gantikan contoh dengan nama sumber sebenar dan simpan kata laluan, token atau kunci dalam pembolehubah persekitaran.
Risiko
Sebelum operasi produksi, semak sandaran, akses, tetingkap perubahan dan pelan rollback.
Pelan Rollback
Simpan konfigurasi dan versi asal; rollback konfigurasi, imej atau perubahan pangkalan data jika metrik tidak normal.
Senarai Serahan
Rekod punca isu, arahan penting, langkah pembaikan, hasil pengesahan dan cadangan susulan.
Perlu bantuan isu teknikal serupa?
Jika pelayan, Kubernetes, Docker, CI/CD, pangkalan data atau pemantauan anda bermasalah, hantar log dan konfigurasi untuk diagnosis jauh.