Buku Panduan SRE Linux: Menangani Beban Tinggi pada Pelayan Pengeluaran
Senario
Jam 2 pagi dan pager anda berbunyi. Sebuah pelayan aplikasi kritikal menunjukkan purata beban 30 pada mesin 16 teras. Permintaan pelanggan mula tamat. Buku panduan ini adalah panduan anda untuk mendiagnosis dan menyelesaikan isu sedemikian secara sistematik tanpa melarikan insiden.
Gejala
- Purata beban secara konsisten melebihi bilangan teras CPU (semak dengan
nproc). - Sesi SSH terasa lembap; arahan mengambil masa beberapa saat untuk kembali.
- Latensi aplikasi melonjak, dan pemeriksaan kesihatan mula gagal.
uptimemenunjukkan purata 1, 5, dan 15 minit yang tinggi.
Langkah Diagnosis
-
Snapshot Pantas
Jalankanuptimedancat /proc/loadavguntuk mengesahkan beban. Juga catat bilangan teras CPU (nproc). Ini menetapkan garis asas. -
Cari Proses Paling Panas
Gunakantop -b -n 1 | head -30untuk snapshot. Atauhtopinteraktif jika dipasang. Untuk senarai yang lebih jelas, gunakan:bash ps -eo pid,ppid,user,cmd,%cpu,%mem --sort=-%cpu | headCari proses yang menggunakan CPU paling banyak. Jika tiada yang jelas, periksa I/O dan memori seterusnya. -
CPU vs I/O Bound
Jalankanvmstat 1 5. Lajurus(pengguna),sy(sistem), danwa(tunggu I/O) adalah kunci. Jikawakonsisten tinggi (mis., >30%), isu adalah I/O cakera. Jikaus/symendominasi, ia adalah CPU-bound. -
Selidik I/O Cakera
Untuk sistem yang I/O-bound, gunakaniostat -x 1untuk melihat penggunaan peranti dan panjang giliran.iotop(jika tersedia) menunjukkan I/O per proses. Cari proses seperti daemon log, titik semak pangkalan data, atau backup yang membebankan cakera. -
Periksa Tekanan Memori
Gunakanfree -mdan periksa penggunaan swap. Sistem yang bertukar dengan banyak boleh kelihatan seperti beban tinggi. Lihatdmesguntuk mesejoom-killer. Tekanan memori tinggi juga boleh menyebabkan thrashing pada peringkat OS. -
Semak Log Sistem
Tiba-tiba, periksa ralat dalam beberapa minit terakhir:bash journalctl -p err -n 100 --since "10 min ago"Cari ralat cakera, kegagalan perkhidmatan systemd, atau kerosakan berulang. -
Jejak Proses
Jika proses tertentu terperangkap dalam gelung, lampirkanstracedengan berhati-hati. Contohnya, jejak panggilan sistem selama 10 saat dan ringkaskan:bash timeout 10 strace -c -p $PIDIni boleh mendedahkan panggilan futex yang tidak berkesudahan (pertikaian kunci) atau I/O fail. Untuk profil kernel yang lebih dalam,perf top(sebagai root) mungkin menunjukkan fungsi panas.
Kawalan Risiko
- Jangan bunuh proses secara membuta tuli. Sentiasa semak dengan
ps -o user,pid,cmd -p $PIDuntuk melihat apa dan siapa pemiliknya. - Gunakan
kill -TERM(lembut) sebelumkill -KILL. - Jika proses tidak kritikal, kurangkan keutamaannya:
renice +20 -p $PID. - Untuk proses I/O berat, gunakan
ionice -c3 -p $PIDuntuk menetapkan kelas idle. - Jangan sekali-kali mengubah fail konfigurasi tanpa menyalinnya terlebih dahulu. Gunakan
cp fail fail.bak. - Uji sebarang perubahan unit systemd dengan
systemd-analyze verify /path/to/perkhidmatan.
Pelan Gulung Balik
- Jika anda mengubah konfigurasi perkhidmatan, sahkan dahulu dan kemudian mulakan semula:
systemctl restart my-service. - Jika anda membuang kerja cron yang disyaki, pulihkan crontab dari sandaran.
- Jika anda memasang pakej jejak sementara, nyahpasang selepas insiden.
- Sentiasa dokumentasikan apa yang anda ubah dan bila, supaya anda boleh mengembalikannya jika perlu.
Pengesahan
- Jalankan semula
uptimedan sahkan purata beban turun ke julat yang sihat (mis., <= 1.5x bilangan CPU untuk beban kerja anda). - Uji perkhidmatan dengan beberapa permintaan:
curl -w "@curl-format.txt" -o /dev/null -s https://your-api/healthuntuk mengukur latensi. - Pantau
vmstatdaniostatselama 5-10 minit untuk pastikan sistem stabil. - Periksa log untuk ralat baru:
journalctl -p err --since "5 min ago".
Bila Perlu Menghantar Tiket OpsGlobal
OpsGlobal menyediakan sokongan SRE jauh 24/7. Hantar tiket apabila: - Beban masih tinggi selepas anda menangani isu proses atau I/O yang jelas. - Anda mengesyaki bug kernel, isu pemacu, atau kerosakan sistem fail yang memerlukan kepakaran mendalam. - Punca tidak jelas, dan perniagaan kehilangan wang semasa anda mencari. - Anda memerlukan pendapat kedua dalam konfigurasi kompleks atau tugas penalaan prestasi.
SRE kami boleh menganalisis dump kemalangan kernel, menggunakan alat jejak lanjutan, dan membantu anda membina pembaikan jangka panjang. Anda juga akan mendapat laporan selepas insiden untuk menambah baik pemantauan.
Ingat, pendekatan sistematik menjimatkan masa. Jangan panik, ikuti buku panduan ini, dan tahu bila untuk meminta bantuan.
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 isu beban tinggi pada pelayan Linux pengeluaran dengan arahan, kawalan risiko, dan nasihat 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.