Saya menerima laporan dari pengguna Redis, dan saya tidak yakin harus menjawab apa karena saya bukan ahli di bidang Linux dan penjadwalnya, namun kami (sebagai proyek Redis) perlu memikirkan masalah seperti ini terutama di masa depan seperti dengan Redis Cluster kita akan memiliki banyak contoh Redis berjalan pada saat yang sama dalam satu kotak. Jadi saya meminta bantuan di sini.
Masalah:
- Kernel: "Linux redis1 2.6.32-305-ec2 # 9-Ubuntu SMP Kamis 15 Apr 08:05:38 UTC 2010 x86_64 GNU / Linux"
- banyak RAM gratis, tidak ada proses lain yang melakukan I / O signifikan.
- Penting , berjalan pada instance besar EC2, bukan server nyata. Saya tidak pernah melihat hal seperti itu di lingkungan yang tidak tervirtualisasi. Mesin virtual EC2 adalah: " Mesin Virtual Memori Ekstra Besar Besar 17,1 GB, 6,5 ECU (2 inti virtual dengan masing-masing Unit Komputer 3,25 EC2), penyimpanan contoh lokal 420 GB, platform 64-bit" .
Pada dasarnya setelah Anda me-restart instance Redis yang besar, sistem akan menjadi sangat lambat sehingga Anda tidak bisa lagi mengetikkan shell. Ketika Redis memuat instance, ia menggunakan 100% CPU (memuat data secepat mungkin) dan membaca file dump.rdb secara berurutan. I / O tidak terlalu tinggi karena memuat terikat CPU, bukan terikat I / O.
Mengapa di bumi sebuah kotak dengan dua CPU dan banyak RAM, tidak ada swap pada disk, pada dasarnya harus berhenti bekerja dengan beban kerja ini?
Saya memiliki kesan ini ada hubungannya dengan fakta ini adalah contoh EC2, jadi terkait dengan teknologi virtualisasi yang digunakan, karena saya memuat setiap saat Redis 24 GB dataset dalam kotak saya tanpa masalah (bahkan dengan contoh Redis lainnya berjalan dengan beban tinggi).
Terima kasih atas petunjuknya!
Salvatore
Sunting : menambahkan beberapa umpan balik yang saya terima dari twitter:
from @ezmobius: @antirez hal pertama yang harus dilakukan adalah mencobanya dari / mnt atau drive ephemeral lokal untuk melihat apakah keruwetan EBS-nya, ke-2 adalah memastikan itu bukan "hukuman penalti pertama" (google it) dan jika kemudian Anda harus menemukan 0 di disk terlebih dahulu.
dari @dvirsky: @antirez Saya menjalankan banyak instance redis pada node ec2 yang persis seperti itu. Saya perhatikan beberapa perlambatan pada bgsave tetapi tidak pada fenomena ini.