Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 47166|Jawab: 1

[Sumber] Redis MISCONF Redis dikonfigurasi untuk menyimpan rekam jepret RDB

[Salin tautan]
Dipaparkan pada 2021-5-14 21:18:50 | | | |
Menggunakan StackExchange.Redis untuk memanipulasi cache redis, kesalahannya adalah sebagai berikut:

StackExchange.Redis.RedisServerException: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

Solusi sementara, memodifikasi file redis.windows.conf,Layanan Redis perlu dimulai ulang, atur sebagai berikut:
Jika Anda tidak ingin memulai ulang layanan Redis, Anda dapat menggunakan perintah redis-cli untuk mengaturnya sebagai berikut:



Penjelasannya adalah sebagai berikut:
# Secara default Redis akan berhenti menerima penulisan jika rekam jepret RDB diaktifkan
# (setidaknya satu titik penyimpanan) dan penyimpanan latar belakang terbaru gagal.
# Ini akan membuat pengguna sadar (dengan cara yang sulit) bahwa data tidak bertahan
# pada disk dengan benar, jika tidak, kemungkinan besar tidak ada yang akan memperhatikan dan beberapa
# bencana akan terjadi.
#
# Jika proses penyimpanan latar belakang akan mulai bekerja lagi, Redis akan
# secara otomatis mengizinkan penulisan lagi.
#
# Namun, jika Anda telah menyiapkan pemantauan server Redis yang tepat
# dan persistensi, Anda mungkin ingin menonaktifkan fitur ini sehingga Redis akan
# terus bekerja seperti biasa bahkan jika ada masalah dengan disk,
# izin, dan sebagainya.
Sederhananya: Redis perlu melakukan fork pada proses utama agar proses utama tidak memalsukan kematian saat menyimpan data ke hard disk, dan kemudian menyelesaikan operasi penyimpanan data ke hard disk dalam proses fork, jika proses utama menggunakan memori 4GB, diperlukan tambahan 4GB ketika sub-proses fork dibutuhkan, saat ini memori tidak cukup, fork gagal, dan kemudian hard disk penyimpanan data juga gagal.

Untuk melihat log redis, Anda perlu mengonfigurasi redis.windows.conf sebagai berikut:

# Tentukan nama file log. Juga 'stdout' dapat digunakan untuk memaksa
# Redis untuk masuk ke output standar.
file log "E:/Redis-x64-3.2.100/redis.txt"

Pengecualian log adalah sebagai berikut:

[8984] 14 Mei 14:05:09.060 * Penyimpanan latar belakang dimulai oleh pid 8672
[8672] 14 Mei 14:05:09.169 #
Redis versi Windows mencadangkan memori tumpukan dari file paging sistem
untuk berbagi dengan proses bercabang yang digunakan untuk operasi persistensi. Saat ini tidak ada cukup ruang kosong yang berdekatan yang tersedia di
file paging sistem. Anda dapat meningkatkan ukuran file paging sistem.
Terkadang reboot akan mendefragmentasi file paging sistem cukup untuk
operasi ini berhasil diselesaikan.

Redis tidak bisa melanjutkan. Keluar.
[8984] 14 Mei 14:05:09.278 # operasi garpu gagal



Setelah analisis, ternyata masalah dengan konfigurasi "maxheap" ukuran tumpukan maksimum disebabkan oleh memori yang tersedia tidak mencukupi.

Larutan

Buka file konfigurasi Redis "redis.windows.conf" dan temukan bagian kode berikut:


# Tumpukan Redis harus lebih besar dari nilai yang ditentukan oleh maxmemory
#, karena alokasi tumpukan memiliki persyaratan memorinya sendiri dan
# Fragmentasi tumpukan tidak dapat dihindari. Jika hanya bendera maxmemory
# ditentukan, maxheap akan diatur pada 1.5*maxmemory. Jika bendera maxheap adalah
# ditentukan bersama dengan maxmemory, bendera maxheap akan secara otomatis
# meningkat jika lebih kecil dari 1.5*maxmemory.
#  
# maxheap <bytes>

Menambahkan pengaturan ini bagus,Layanan Redis gagal dimulai!!!!!!!
Nilai defaultnya adalah: maxheap 1024000000≈976.56M

Saya tidak menemukan komentar ini di file conf, saya menemukan sesuatu seperti ini:
# Jangan gunakan memori lebih dari jumlah byte yang ditentukan.
# Ketika batas memori tercapai, Redis akan mencoba menghapus tombol
# sesuai dengan kebijakan penggusuran yang dipilih (lihat maxmemory-policy).
#
# Jika Redis tidak dapat menghapus kunci sesuai dengan kebijakan, atau jika kebijakannya
# diatur ke 'noeviction', Redis akan mulai membalas dengan kesalahan ke perintah
# yang akan menggunakan lebih banyak memori, seperti SET, LPUSH, dan sebagainya, dan akan terus berlanjut
# untuk membalas perintah baca-saja seperti GET.
#
# Opsi ini biasanya berguna saat menggunakan Redis sebagai cache LRU, atau untuk mengatur
# batas memori keras untuk instans (menggunakan kebijakan 'noeviction').
#
# PERINGATAN: Jika Anda memiliki slave yang terpasang ke instance dengan maxmemory aktif,
# ukuran buffer keluaran yang diperlukan untuk memberi makan budak dikurangi
# dari jumlah memori yang digunakan, sehingga masalah jaringan / sinkronisasi ulang akan
# tidak memicu loop di mana tombol dikeluarkan, dan pada gilirannya output
# buffer slave penuh dengan DEL kunci yang diusir yang memicu penghapusan
# lebih banyak kunci, dan seterusnya sampai database benar-benar dikosongkan.
#
# Singkatnya... Jika Anda memiliki budak yang terpasang, disarankan agar Anda menetapkan yang lebih rendah
# batas untuk maxmemory sehingga ada beberapa RAM gratis pada sistem untuk slave
# buffer output (tetapi ini tidak diperlukan jika kebijakannya adalah 'noeviction').
#
# PERINGATAN: tidak mengatur maxmemory akan menyebabkan Redis berakhir dengan
# Pengecualian kehabisan memori jika batas tumpukan tercapai.
#
# CATATAN: karena Redis menggunakan file paging sistem untuk mengalokasikan memori tumpukan,
# penggunaan memori Working Set yang ditunjukkan oleh Windows Task Manager atau oleh lainnya
# alat seperti ProcessExplorer tidak akan selalu akurat. Misalnya, benar
# setelah penyimpanan latar belakang file RDB atau AOF, nilai set kerja
# mungkin turun secara signifikan. Untuk memeriksa jumlah memori yang benar yang digunakan
# oleh redis-server untuk menyimpan data, gunakan perintah klien INFO. INFORMASI
# hanya menunjukkan memori yang digunakan untuk menyimpan data redis, bukan tambahan
# memori yang digunakan oleh proses Windows untuk kebutuhannya sendiri. Jumlah tambahan Th3
# memori yang tidak dilaporkan oleh perintah INFO dapat dihitung dengan mengurangi
# Puncak Working Set yang dilaporkan oleh Windows Task Manager dan used_memory_peak
# dilaporkan oleh perintah INFO.
#
# maxmemory <bytes>

Peringatan: Jika batas tumpukan tercapai, tidak mengatur maxmemory akan menyebabkan Redis berakhir dengan pengecualian kehabisan memori.

Catatan: KarenaRedis menggunakan file paging sistem untuk mengalokasikan memori tumpukan

Windows Task Manager atau alat lain seperti ProcessExplorer tidak selalu menampilkan penggunaan memori workset yang akurat. Secara sederhana,Penggunaan memori yang ditampilkan oleh Task Manager tidak akurat!!!

Gunakan perintah info untuk mengkueri sebagai berikut:

# Memori
used_memory:2011338768
used_memory_human:1.87G
used_memory_rss:2011279992
used_memory_rss_human:1.87G
used_memory_peak:2011338768
used_memory_peak_human:1.87G
total_system_memory:0
total_system_memory_human:0B
used_memory_lua:37888
used_memory_lua_human: 37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy: penggusuran
mem_fragmentation_ratio:1.00
mem_allocator: jemalloc-3.6.0



Pengaturannya adalah sebagai berikut:

1073741824 byte = 1G
Setelah pengaturan, klien .net redis menambahkan kesalahan cache sebagai berikut:

Perintah OOM tidak diizinkan saat menggunakan memori > 'maxmemory'.
# KEBIJAKAN MAXMEMORY: bagaimana Redis akan memilih apa yang akan dihapus saat maxmemory
# tercapai. Anda dapat memilih di antara lima perilaku:
#
# volatile-lru -> hapus kunci dengan set kedaluwarsa menggunakan algoritma LRU
# allkeys-lru -> hapus kunci apa pun sesuai dengan algoritma LRU
# volatile-random -> menghapus kunci acak dengan set kedaluwarsa
# allkeys-random -> hapus kunci acak, kunci apa pun
# volatile-ttl -> lepaskan kunci dengan waktu kedaluwarsa terdekat (TTL minor)
# noeviction -> tidak kedaluwarsa sama sekali, cukup mengembalikan kesalahan pada operasi tulis
#
# Catatan: dengan salah satu kebijakan di atas, Redis akan mengembalikan kesalahan saat menulis
# operasi, ketika tidak ada kunci yang cocok untuk penggusuran.
#
# Pada tanggal penulisan perintah ini adalah: set setnx setex append
# Incr Decr Rpush Lpush RpushX Lpushx Linsert Lset RpoplPush Sadd
# sinter sinterstore sunion sunionstore sdiff sdiff sdiff zadd zincrby
# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
# getset mset msetnx exec sortir
#
# Defaultnya adalah:
#
# penggusuran kebijakan maxmemory-
#MAXMEMORY策略: Saat MAXMEMORY

#到达. Anda dapat memilih dari lima perilaku:

#

#volatile LRU-> menggunakan algoritma LRU untuk menghapus kunci dengan set kedaluwarsa

#allkeys LRU-> menghapus kunci apa pun sesuai dengan algoritma LRU

#volatile acak - > menghapus kunci acak dengan set kedaluwarsa

#allkeys > acak menghapus kunci acak, kunci arbitrer

#volatile TTL-> Hapus kunci dengan waktu kedaluwarsa terdekat (TTL Minor)

#noeviction-> tidak kedaluwarsa sama sekali, hanya mengembalikan kesalahan operasi tulis

#

#注意: Untuk salah satu strategi di atas, Redis mengembalikan kesalahan saat menulis

#操作, ketika tidak ada kunci yang cocok untuk penggusuran.

#

#在编写之日, perintah ini adalah: atur setnx setex append

#递增递减rpush lpushx lpushx linsert lset rpoplpush sadd

#烧结店sunion sunionstore sdiff sdiffstore zadd zincrby

#zunionstore Zinterstore Hset Hsetnx HMSET Hincrby Incrby Decrby

#getset penyortiran eksekutif mset msetnx

#

#默认值为:

#

#maxmemory策略无效
Anda juga perlu menyiapkan konfigurasi berikut:

Pengaturan redis default sangat konservatif, yaitu tidak disimpan setelah batas memori terlampaui, dan kebijakan dapat diubah menjadi algoritma LRU (algoritma yang paling jarang digunakan baru-baru ini) - informasi yang baru disimpan akan menggantikan informasi lama.

Resensi:

Perbedaan Persistensi Redis Antara RDB dan AOF
https://www.itsvse.com/thread-9555-1-1.html

Instalasi Docker menjalankan cache Redis
https://www.itsvse.com/thread-8995-1-1.html

Contoh menjelaskan apa itu penetrasi cache Redis, longsoran cache, dan perincian cache
https://www.itsvse.com/thread-8968-1-1.html

Wildcard Redis untuk menghapus kunci secara massal
https://www.itsvse.com/thread-7957-1-1.html

Instalasi CentOS 7 Redis 5.0.3 tutorial
https://www.itsvse.com/thread-7201-1-1.html

Instal ekstensi redis di bawah php 5.5.7 di bawah CentOS
https://www.itsvse.com/thread-7200-1-1.html

Berapa banyak kunci yang dapat disimpan dalam instans redis, dan apa kunci dan nilai maksimumnya?
https://www.itsvse.com/thread-6848-1-1.html

Masalah bahasa Cina redis tidak dapat ditampilkan dengan baik
https://www.itsvse.com/thread-5032-1-1.html

Redis memungkinkan akses jarak jauh
https://www.itsvse.com/thread-5011-1-1.html

Windows gagal memulai layanan Redis, kesalahan 1067: Proses berakhir secara tak terduga.
https://www.itsvse.com/thread-5010-1-1.html

CentOS menginstal Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

Redis menyiapkan koneksi jarak jauh dan kata sandi akses
https://www.itsvse.com/thread-4101-1-1.html

Redis mengosongkan cache data
https://www.itsvse.com/thread-4027-1-1.html

Konfigurasi persistensi Redis dan persistensi nonaktif
https://www.itsvse.com/thread-4012-1-1.html

Perbedaan antara save dan bgsave di redis
https://www.itsvse.com/thread-4010-1-1.html

Redis dua metode dan prinsip persistensi
https://www.itsvse.com/thread-4009-1-1.html

Redis memiliki tiga cara untuk memulai
https://www.itsvse.com/thread-4008-1-1.html

Metode Redis untuk menyembunyikan jendela baris perintah
https://www.itsvse.com/thread-2988-1-1.html

Masalah Nilai Hash Hash Redis
https://www.itsvse.com/thread-2587-1-1.html

5 Hal yang Harus Anda Ketahui Sebelum Menggunakan Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis memodifikasi nomor port default dan mengatur kata sandi akses
https://www.itsvse.com/thread-2577-1-1.html

Unduhan Redis windows 64-bit, alamat unduhan resmi
https://www.itsvse.com/thread-2576-1-1.html

Redis menggunakan skrip Lua untuk penjelasan terperinci
https://www.itsvse.com/thread-9634-1-1.html

Uji kinerja Redis Benchmark
https://www.itsvse.com/thread-9645-1-1.html

(Akhir)






Mantan:Penilaian NPOI jenis tanggal sel
Depan:Penjelasan Detail Operasi NPOI Excel
 Tuan tanah| Dipaparkan pada 2023-7-12 21:08:55 |
Memori Redis delapan strategi eliminasi
https://www.itsvse.com/thread-10626-1-1.html
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com