Senario
Anda seorang SRE yang bertugas. Platform e-dagang pasukan anda mengalami kelewatan pemprosesan pesanan semasa jualan kilat. Seni bina menggunakan Redis untuk cache sesi, RabbitMQ untuk barisan pesanan, dan Kafka untuk strim acara. Selepas peristiwa penskalaan baru-baru ini, lonjakan latensi berlaku.
Gejala
- Redis: Latensi meningkat > 100ms, CPU tinggi, pengusiran.
- RabbitMQ: Kedalaman barisan bertambah, pengguna melahu, amaran cakera.
- Kafka: Ketinggalan pengguna meningkat, CPU broker tinggi, replikasi partition kurang.
Diagnosis
Redis
redis-cli info statsperiksa evicted_keys.redis-cli slowlog getuntuk arahan perlahan.redis-cli client listuntuk sambungan.- Gunakan
memory doctorjika OOM.
RabbitMQ
rabbitmqctl list_queues name messages consumers memory.- Periksa amaran cakera dan memori melalui
rabbitmqctl status. - Dayakan log surih jika perlu.
Kafka
kafka-consumer-groups --bootstrap-server <server> --describe --group <group>untuk ketinggalan.kafka-topics --describe --under-replicated-partitions.- Periksa log broker dan metrik JMX.
Arahan (dengan nota keselamatan)
Redis
- Untuk membersihkan arahan perlahan, pertimbangkan skala replika baca atau optimumkan struktur data. Gunakan
CLIENT KILLdengan berhati-hati.
RabbitMQ
- Untuk membuka ikatan barisan sementara:
rabbitmqctl set_policyuntuk menghadkan panjang barisan ataurabbitmqadmin delete queuedengan berhati-hati. Gunakanrabbitmqctl set_disk_free_limituntuk melaraskan amaran.
Kafka
- Untuk menyekat pengguna: tingkatkan partition atau gunakan pengimbangan semula kumpulan pengguna. Untuk partition panas,
kafka-reassign-partitions.sh. Jangan padam topik tanpa sandaran.
Kawalan Risiko
- Sentiasa ambil gambar RDB/AOF Redis sebelum perubahan.
- Untuk RabbitMQ, sandarkan definisi dengan
rabbitmqadmin export. - Untuk Kafka, sandarkan offset dan konfigurasi topik. Gunakan kesedaran rak.
Prosedur Undur
Redis
- Pulihkan daripada sandaran RDB atau AOF. Pastikan tiada tulis belum selesai hilang.
RabbitMQ
- Import semula definisi, kosongkan barisan jika perlu.
Kafka
- Tetapkan semula offset kumpulan pengguna melalui
kafka-consumer-groups --reset-offsets. Untuk kehilangan data, main semula dari yang terakhir komited.
Pengesahan
- Redis:
redis-benchmarkuji latensi. Pantau pengusiran dan hits/misses. - RabbitMQ: Terbitkan mesej ujian, sahkan kadar penggunaan.
- Kafka: Hasilkan dan guna rekod ujian, periksa ketinggalan berkurang.
Bila perlu hantar tiket OpsGlobal
- Jika punca utama tidak jelas selepas pemeriksaan.
- Jika kehilangan data berlaku atau risiko kehilangan data.
- Jika pod Kubernetes but semula atau isu volum berterusan berterusan.
- Jika anda memerlukan bantuan dengan penalaan halus konfigurasi atau pengerasan keselamatan.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu NoSQL dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Gangguan pengeluaran sering berpunca daripada middleware yang salah konfigurasi atau terlebih muatan. Panduan ini merangkumi senario sebenar, arahan diagnostik, dan prosedur undur untuk Redis, RabbitMQ, dan Kafka, dengan pertimbangan penggunaan Kubernetes.
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.