Senario
Semasa jualan kilat, platform e-dagang bergantung pada cache Redis, barisan mesej RabbitMQ, dan bas peristiwa Kafka. Tiba-tiba, kependaman pesanan melonjak, beberapa permintaan tamat masa, dan amaran pemantauan berbunyi.
Simptom
- Redis:
redis-cli --latencymenunjukkan >100ms (biasa <1ms); arahanINFOmemaparkanused_memory_peakmenghampirimaxmemory. - RabbitMQ: UI Pengurusan menunjukkan pengumpulan baris;
rabbitmqctl list_queues messages_readymendedahkan berjuta-juta mesej belum digunakan; amaran memori nod. - Kafka:
kafka-consumer-groups --describemenunjukkan pengguna ketinggalan berpuluh ribu;kafka-run-class.sh kafka.tools.JmxToolmelaporkan masa pemprosesan permintaan meningkat.
Diagnosis
Redis
# Semak pertanyaan perlahan
redis-cli SLOWLOG GET 10
# Semak penggunaan memori
redis-cli INFO memory | grep used_memory_human
# Cari kunci besar
redis-cli --bigkeys
# Semak bilangan sambungan
redis-cli CLIENT LIST | wc -l
RabbitMQ
# Butiran baris
rabbitmqctl list_queues name messages_ready messages_unacknowledged consumers
# Memori nod
rabbitmqctl status | grep memory
# Sambungan
rabbitmqctl list_connections state user
# Mesej belum diakui setiap saluran
rabbitmqctl list_channels connection messages_unacknowledged
Kafka
# Ketinggalan kumpulan pengguna
kafka-consumer-groups --bootstrap-server localhost:9092 --group my-group --describe
# Taburan ketua partition
kafka-topics --describe --topic my-topic --bootstrap-server localhost:9092
# Saiz segmen log
kafka-log-dirs --bootstrap-server localhost:9092 --describe --topic-list my-topic
# Masa pemprosesan permintaan (perlukan JMX diaktifkan)
Kawalan Risiko
Sebelum sebarang perubahan:
- Redis: Jika memori hampir had, tetapkan maxmemory dan dasar pengusiran allkeys-lru. Jangan sekali-kali jalankan FLUSHALL dalam pengeluaran tanpa kelulusan dan sandaran.
- RabbitMQ: Sahkan kesihatan pengguna sebelum skala. Memadam baris akan kehilangan data; elakkan kecuali perlu.
- Kafka: Sandarkan server.properties sebelum perubahan konfigurasi. Jangan gunakan kafka-delete-records pada topik pengeluaran tanpa snapshot.
Undur
Redis
Jika konfigurasi diubah: CONFIG SET maxmemory 0 untuk kembali ke lalai. Jika FLUSHALL dilaksanakan, pulihkan dari RDB/AOF—perhatikan potensi kehilangan data.
RabbitMQ
Jika polisi (contohnya TTL) ditambah: rabbitmqctl clear_policy <queue>. Jika parameter diubah: gunakan rabbitmqctl set_parameter untuk mengembalikan.
Kafka
Jika log.retention.hours diubah: tukar kembali ke nilai asal dan mulakan semula broker secara rolling.
Pengesahan
- Redis: Jalankan
redis-cli --latencyuntuk mengesahkan kependaman menurun; perhatikan penggunaan memoriINFOmenurun. - RabbitMQ: Semak kedalaman baris menurun;
rabbitmqctl list_queues messages_readymenunjukkan lebih sedikit mesej. - Kafka: Ketinggalan pengguna mencapai 0;
kafka-consumer-groups --describememaparkanLAGsebagai 0.
Bila Menghantar Tiket OpsGlobal
- Perubahan yang memerlukan koordinasi merentas pasukan (contohnya pengembangan storan).
- Punca akar tidak jelas selepas diagnosis asas.
- Isu berterusan selepas undur, atau perlu pembinaan semula kluster.
- Tampalan keselamatan atau refaktor seni bina diperlukan.
Kesimpulan
Dengan pengiktirafan simptom sistematik, arahan diagnostik selamat, dan undur terkawal, kebanyakan isu middleware dapat diselesaikan dalam 10 minit. OpsGlobal menyediakan sokongan pakar 24/7 untuk memastian laluan kritikal anda sentiasa tersedia.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu NoSQL dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan langkah demi langkah mengenai senario kegagalan berantai sebenar yang melibatkan Redis, RabbitMQ, dan Kafka. Ketahui simptom, arahan diagnostik, kawalan risiko, langkah undur, pengesahan, dan bila perlu menghantar tiket OpsGlobal.
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.