Senario
Sebuah platform e-commerce mengalami tamat masa yang besar semasa jualan kilat. Kadar capaian cache Redis menurun, baris gilir RabbitMQ bertimbun, dan kependaman pengguna Kafka melonjak, menjejaskan pengalaman pengguna.
Gejala
- Masa respons API melompat dari 200ms ke 5s
keyspace_missesRedis meningkat secara mendadak (semak denganINFO stats)messages_readybaris gilir RabbitMQ terus bertambahLAGkumpulan pengguna Kafka melebihi 10000
Diagnosis
- Redis: Jalankan
redis-cli INFO stats | grep keyspaceuntuk menyemak nisbah capaian. Kehilangan yang tinggi menunjukkan ketidakcekapan cache. GunakanMEMORY USAGE <key>untuk mencari kunci besar. - RabbitMQ: Laksanakan
rabbitmqctl list_queues name messages_ready consumersuntuk melihat jika pengguna kurang. Periksa log pengguna. - Kafka: Jalankan
kafka-consumer-groups --bootstrap-server localhost:9092 --group my-group --describeuntuk melihat kependaman setiap partition. Kependaman tinggi bermakna penggunaan perlahan atau pembahagian tidak sekata.
Arahan Contoh
# Diagnosis Redis
redis-cli -h <host> -p 6379 INFO stats | grep -E 'keyspace_(hits|misses)'
# Diagnosis RabbitMQ
rabbitmqctl list_queues name messages_ready consumers memory
# Kependaman pengguna Kafka
kafka-consumer-groups.sh --bootstrap-server <broker>:9092 --group <group> --describe
Kawalan Risiko
- Konfigurasikan
maxmemoryRedis dengan dasar pengusiranallkeys-lru - Tetapkan
x-max-lengthatau TTL baris gilir RabbitMQ untuk mengelakkan pertumbuhan tanpa had - Laksanakan tekanan balik dalam pengguna Kafka (contohnya, laraskan
max.poll.records) - Gunakan HPA Kubernetes untuk menskalakan pod pengguna secara automatik
Langkah Rollback
- Redis: Jika skrip Lua menyebabkan isu, lumpuhkan atau kembalikan kod.
- RabbitMQ: Padam baris gilir yang bertimbun (berhati-hati!) atau pindahkan pengguna ke contoh yang lebih pantas.
- Kafka: Hentikan pengguna dan tetapkan semula offset ke awal:
kafka-consumer-groups --reset-offsets --to-earliest - Kembalikan deployment:
kubectl rollout undo deployment/<service>
Pengesahan
- Redis: Gunakan
redis-cli MONITORuntuk memerhatikan permintaan langsung; kadar capaian harus pulih. - RabbitMQ:
messages_readybaris gilir harus menurun secara beransur-ansur ke keadaan stabil. - Kafka: Semak
LAGkembali ke sifar dan partition diagihkan secara sekata. - Aplikasi: Pantau kependaman API melalui Prometheus + Grafana.
Bila Menghantar Tiket OpsGlobal
- Jika langkah di atas gagal, atau penalaan pakar diperlukan (misalnya, penugasan semula partition Kafka).
- Jika punca akar melibatkan pembahagian rangkaian kompleks atau kegagalan storan.
- Apabila sokongan SRE terurus 24/7 diperlukan.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu NoSQL dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan praktikal untuk mendiagnosis dan membetulkan isu kebolehpercayaan biasa dalam Redis, RabbitMQ, dan Kafka semasa pengeluaran, termasuk senario, gejala, arahan, kawalan risiko, rollback, dan pengesahan.
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.