Senario
Pelayan Linux produksi menjadi tidak responsif, amaran pemantauan menunjukkan penggunaan CPU melebihi 90% secara berterusan.
Simptom
- Sambungan SSH lambat atau tamat masa
- Masa respons aplikasi meningkat
topatauuptimemenunjukkan purata beban tinggi
Diagnosis
- Masuk SSH ke pelayan menggunakan IP pengurusan atau pengurusan luar jalur (contohnya iDRAC).
- Jalankan
top -b -n1, tekanPuntuk menyusun mengikut CPU, kenal pasti proses teratas. - Gunakan
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | headuntuk pengesahan. - Periksa proses:
ls -l /proc/<PID>/exedanstrace -p <PID> -c -S time 2>&1untuk mengesan panggilan sistem. - Gunakan
perf topjika dipasang untuk profil prestasi. - Periksa log sistem:
journalctl -u <service> --since "5 minutes ago".
Perintah
- Kumpul maklumat proses:
ps -p <PID> -o pid,ppid,user,start,etime,%cpu,%mem,cmd - Analisis utas:
top -H -p <PID>ataups -L -p <PID> - Peta memori:
pmap -x <PID> - Jejak tindanan:
pstack <PID>ataugdb -batch -ex "thread apply all bt" -p <PID> - Laraskan keutamaan dengan
nice:renice +10 <PID>(kurangkan persaingan CPU)
Kawalan Risiko
- Sahkan proses bukan kritikal sebelum membunuhnya.
- Gunakan
kill -STOP <PID>untuk menjeda proses berbanding menamatkannya. - Jika proses adalah yatim atau zombi, periksa induk; mulakan semula perkhidmatan induk jika perlu.
- Untuk perkhidmatan bukan teras, gunakan
systemctl restart <service>daripada kill. - Elakkan menjalankan
perfataustracepada waktu puncak kerana ia menambah overhed.
Pengembalian
- Jika proses terbunuh secara tidak sengaja, segera mulakan semula perkhidmatan:
systemctl start <service>atau perintah manual. - Jika pelarasan keutamaan menyebabkan isu lain, pulihkan lalai dengan
renice 0 <PID>. - Jika failover menjejaskan kesihatan kluster, tukar ke nod siap sedia.
Pengesahan
- Jalankan
topdan sahkan penggunaan CPU normal (contohnya <50%). - Periksa titik akhir kesihatan aplikasi:
curl -I http://localhost:8080/health. - Pantau log untuk ralat baru:
tail -f /var/log/syslog | grep -i error. - Sahkan masa respons dengan alat ujian beban.
Bila Menghantar Tiket OpsGlobal
- Tidak dapat menentukan asal atau pemilikan proses.
- Proses berulang kali dimulakan semula atau tidak boleh dibunuh (contohnya tersekat dalam keadaan D).
- Analisis punca memerlukan semakan kod atau siasatan peringkat kernel.
- Patch atau perubahan konfigurasi memerlukan kelulusan pengurusan perubahan.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu DevOps dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan langkah demi langkah untuk SRE mendiagnosis dan menyelesaikan isu beban CPU tinggi dalam persekitaran Linux produksi, dengan kawalan keselamatan dan kriteria eskalasi.
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.