Senario
Sebuah platform mikroservis bergantung pada Redis untuk caching, RabbitMQ untuk pemesejan tak segerak, dan Kafka untuk penstriman peristiwa. Tiba-tiba, platform mengalami lonjakan kependaman, kegagalan pemprosesan mesej, dan ketidakselarasan data.
Kebolehpercayaan Redis
Gejala
- Kadar hit cache jatuh di bawah 80%
- Timeout arahan (cth., kependaman
GET> 10ms) - Penggunaan memori melebihi 80% (used_memory_rss tinggi dalam
INFO memory)
Diagnosis
- Periksa pertanyaan perlahan:
SLOWLOG GET 10 - Periksa fragmentasi memori:
INFO memorymem_fragmentation_ratio (>1.5 menunjukkan fragmentasi) - Periksa isu kegigihan:
INFO persistencemenunjukkan rdb_last_bgsave_time_sec panjang
Arahan & Kawalan Risiko
# Lihat pertanyaan perlahan
redis-cli -h localhost -p 6379 SLOWLOG GET 10
# Analisis fragmentasi memori
redis-cli MEMORY PURGE
# Nota: MEMORY PURGE boleh menyekat; jalankan semasa trafik rendah.
Rollback
- Jika disebabkan perubahan konfigurasi, balikkan dan mulakan semula:
redis-cli CONFIG SET save ""untuk balikkan strategi kegigihan. - Gunakan
REPLICAOF NO ONEuntuk hentikan replikasi, kemudian resinkron.
Pengesahan
- Semak semula pertanyaan perlahan:
SLOWLOG RESETkemudian ujian penanda aras. - Sahkan memori:
redis-cli INFO memory | grep used_memoryharus stabil.
Bila Hantar Tiket OpsGlobal
- Apabila pertanyaan perlahan atau isu memori berterusan walaupun pengoptimuman dalaman.
- Apabila perlu melakukan rizat semula kluster atau naik taraf.
Kebolehpercayaan RabbitMQ
Gejala
- Tunggakan mesej: kiraan mesej dalam baris gilir terus meningkat (
rabbitmqctl list_queuesmenunjukkan pertambahan kiraan). - Sambungan terputus:
rabbitmqctl list_connectionsmenunjukkan banyak putus sambungan tidak dijangka. - Penggera memori tinggi:
rabbitmqctl statusmenunjukkan vm_memory_high_watermark_paging_ratio > 0.5.
Diagnosis
- Periksa butiran baris gilir:
rabbitmqctl list_queues name messages consumers memory - Periksa log:
/var/log/rabbitmq/rabbit@host.logcari "alarm" - Periksa rangkaian:
netstat -an | grep 5672
Arahan & Kawalan Risiko
# Lihat semua baris gilir
rabbitmqctl list_queues --silent name messages consumers memory
# Kosongkan baris gilir secara paksa (memusnahkan)
rabbitmqctl purge_queue <nama_baris_gilir>
# Nota: Purge kehilangan semua mesej; guna hanya jika pasti selamat.
Rollback
- Jika ambang memori diubah, balikkan:
rabbitmqctl set_vm_memory_high_watermark 0.4 - Jika pencerminan baris gilir ditambah, alih keluar:
rabbitmqctl set_policy ha-all "" ".*" '{"ha-mode":"exactly","ha-params":1}'
Pengesahan
- Sahkan kadar penggunaan mesej pulih: guna
rabbitmqctl list_queuesdan lihat kiraan menurun. - Uji terbit dan guna dengan kod contoh.
Bila Hantar Tiket OpsGlobal
- Apabila tunggakan mesej memberi kesan kepada perniagaan dan penalaan dalaman gagal.
- Apabila migrasi atau naik taraf kluster RabbitMQ diperlukan.
Kebolehpercayaan Kafka
Gejala
- Ketinggalan pengguna bertambah:
kafka-consumer-groups --bootstrap-server localhost:9092 --group <group> --describemenunjukkan LAG bertambah. - Replika tidak selari:
kafka-topics --describe --topic <topic>menunjukkan ISR kosong atau lebih kecil daripada faktor replikasi. - Penggunaan cakera tinggi: Log Broker melaporkan "Disk usage exceeds threshold".
Diagnosis
- Lihat ketinggalan kumpulan pengguna:
kafka-consumer-groups --bootstrap-server localhost:9092 --all-groups --describe - Periksa penyelarasan replika:
kafka-topics --describe --topic <topic> - Periksa cakera:
df -hdan log Kafka untuk amaran cakera.
Arahan & Kawalan Risiko
# Lihat kumpulan pengguna tertentu
kafka-consumer-groups --bootstrap-server localhost:9092 --group my-group --describe
# Ubah retention untuk padam data lama (berisiko)
kafka-configs --bootstrap-server localhost:9092 --entity-type topics --entity-name <topic> --alter --add-config retention.ms=604800000
# Nota: Retention lebih pendek kehilangan data; sahkan keperluan.
Rollback
- Jika retention diubah, balikkan:
retention.ms=original_value - Jika penugasan semula partisi dilakukan, hentikan dan balikkan kepada asal.
Pengesahan
- Periksa ketinggalan menurun: jalankan semula
--describe. - Periksa ISR dipulihkan:
kafka-topics --describemenunjukkan semua replika dalam selari.
Bila Hantar Tiket OpsGlobal
- Apabila ketinggalan pengguna berterusan walaupun pengoptimuman pengguna.
- Apabila pengembangan kluster atau penyelesaian kesesakan I/O cakera diperlukan.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu NoSQL dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Ketahui cara mendiagnosis dan menyelesaikan isu kebolehpercayaan biasa dengan Redis, RabbitMQ, dan Kafka dalam persekitaran pengeluaran. Panduan ini merangkumi senario sebenar, gejala, arahan diagnostik, kawalan risiko, prosedur rollback, dan langkah pengesahan untuk setiap middleware.
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.