Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 47166|Risposta: 1

[Fonte] Redis MISCONF Redis è configurato per salvare istantanee RDB

[Copiato link]
Pubblicato il 14-05-2021 alle 21:18:50 | | | |
Utilizzando StackExchange.Redis per manipolare la cache redis, l'errore è il seguente:

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.

Soluzione temporanea, modificare il file redis.windows.conf,Il servizio Redis deve essere riavviato, imposta come segue:
Se non vuoi riavviare il servizio Redis, puoi usare il comando redis-cli per configurarlo come segue:



La spiegazione è la seguente:
# Per impostazione predefinita, Redis smetterà di accettare scritture se gli snapshot RDB sono abilitati
# (almeno un punto di salvataggio) e l'ultimo salvataggio in background è fallito.
# Questo renderà l'utente consapevole (in modo difficile) che i dati non persistono
# Su disco correttamente, altrimenti è probabile che nessuno se ne accorga e alcuni
# Il disastro accaderà.
#
# Se il processo di salvataggio in background ricomincierà a funzionare Redis
# Consentire automaticamente le scritture di nuovo.
#
# Tuttavia, se hai impostato il monitoraggio corretto del server Redis
# e persistenza, potresti voler disabilitare questa funzione in modo che Redis
# continuare a lavorare normalmente anche se ci sono problemi con il disco,
# permessi, e così via.
In poche parole: Redis deve fare un fork su un processo principale per evitare che il processo principale finga la morte durante il salvataggio dei dati sull'hard disk, e poi completare l'operazione di salvataggio dei dati sull'hard disk nel processo fork; se il processo principale utilizza 4GB di memoria, sono necessari altri 4GB quando è necessario il sotto-processo del fork; in questo momento la memoria non è sufficiente, il fork fallisce e poi anche il disco rigido di salvataggio dei dati fallisce.

Per visualizzare i log redis, devi configurare redis.windows.conf come segue:

# Specifica il nome del file di log. Inoltre, 'stdout' può essere usato per forzare
# Redis per accedere all'uscita standard.
file di registro "E:/Redis-x64-3.2.100/redis.txt"

Le eccezioni logarime sono le seguenti:

[8984] 14 maggio 14:05:09.060 * Salvataggio in background avviato dal pid 8672
[8672] 14 maggio 14:05:09.169 #
La versione Windows di Redis riserva memoria heap dal file di paging di sistema
per la condivisione con il processo forkato utilizzato per le operazioni di persistenza. Al momento non c'è spazio libero contiguo sufficiente nel
file di paging di sistema. Puoi aumentare la dimensione del file di paging di sistema.
A volte un riavvio deframmenta il file di paginazione di sistema in modo sufficiente per
questa operazione fu completata con successo.

Redis non può continuare. Uscire.
[8984] 14 maggio 14:05:09.278 # operazione fork fallita



Dopo l'analisi, si scoprì che il problema con la configurazione "maxheap" di dimensione massima dell'heap era dovuto a una memoria disponibile insufficiente.

Soluzione

Apri il file di configurazione di Reddis "redis.windows.conf" e trova la seguente sezione del codice:


# L'heap di Redis deve essere maggiore del valore specificato dalla maxmemory
# flag, poiché l'allocator dell'heap ha i propri requisiti di memoria e
# La frammentazione del mucchio è inevitabile. Se solo il flag maxmemory è
# Specificato, il maxheap sarà impostato a 1.5*MaxMemory. Se il flag del maxheap è
# specificato insieme a maxmemory, il flag maxheap sarà automaticamente
# aumentato se è inferiore a 1,5*maxmemory.
#  
# Maxheap <bytes>

Aggiungere questa impostazione è positivo,Il servizio Redis non si avvia!!!!!!!
Il valore predefinito è: maxheap 1024000000≈976,56M

Non ho trovato questo commento nel file di conferenza, ho trovato qualcosa del genere:
# Non usare più memoria del numero specificato di byte.
# Quando il limite di memoria sarà raggiunto, Redis cercherà di rimuovere le chiavi
# Secondo la politica di sfrattamento selezionata (vedi maxmemory-policy).
#
# Se Redis non può rimuovere le chiavi secondo la politica, o se la politica è
# impostato su 'noeviction', Redis inizierà a rispondere con errori ai comandi
# che consumerebbe più memoria, come SET, LPUSH e così via, e continuerà
# per rispondere a comandi di sola lettura come GET.
#
# Questa opzione è solitamente utile quando si usa Redis come cache LRU, o per impostare
# Un limite di memoria rigido per un'istanza (usando la politica di 'noeviction').
#
# ATTENZIONE: Se hai schiavi collegati a un'istanza con maxmemory attivata,
# Si sottrae la dimensione dei buffer di uscita necessari per alimentare gli schiavi
# dal conteggio della memoria usata, così che i problemi di rete / le risincronizzazioni
# non attivare un loop in cui le chiavi vengono sfrattate, e di conseguenza l'output
# buffer degli schiavi è pieno con i DAL delle chiavi sfrattate che attivano la cancellazione
# di più chiavi, e così via finché il database non sarà completamente vuoto.
#
# In breve... Se hai schiavi attaccati, si consiglia di impostare un livello più basso
# limite per maxmemory in modo che ci sia un po' di RAM libera nel sistema per slave
# buffer di uscita (ma questo non è necessario se la politica è 'noevition').
#
# ATTENZIONE: non impostare maxmemory farà terminare Redis con un
# eccezione fuori memoria se il limite dell'heap è raggiunto.
#
# NOTA: poiché Redis utilizza il file di paging di sistema per allocare la memoria heap,
# l'uso della memoria del Working Set mostrato dal Task Manager di Windows o da altri
# strumenti come ProcessExplorer non saranno sempre precisi. Per esempio, giusto
# dopo un salvataggio in background dei file RDB o AOF, il valore del set di lavoro
# potrebbe scendere significativamente. Per verificare la quantità corretta di memoria utilizzata
# dal redis-server per memorizzare i dati, usa il comando client INFO. Le INFORMAZIONI
# Command mostra solo la memoria utilizzata per memorizzare i dati Redis, non l'extra
# memoria utilizzata dal processo Windows per le proprie esigenze. Th3 quantità extra
# di memoria non riportata dal comando INFO può essere calcolata sottraendo il
# Set di lavoro di picco riportato dal Task Manager di Windows e dal used_memory_peak
# segnalato dal comando INFO.
#
# maxmemory <bytes>

Attenzione: Se il limite dell'heap viene raggiunto, non impostare maxmemory causerà la terminazione di Redis con un'eccezione per esaurimento di memoria.

Nota: A causa diRedis utilizza file di paging di sistema per allocare la memoria heap

Il Task Manager di Windows o altri strumenti come ProcessExplorer non mostrano sempre un uso accurato della memoria del worket. In termini semplici,L'utilizzo della memoria mostrato da Task Manager non è accurato!!!

Usa il comando info per interrogare come segue:

# Memoria
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:noefratto
mem_fragmentation_ratio:1.00
mem_allocator:jemalloc-3.6.0



Le impostazioni sono le seguenti:

1073741824 byte = 1G
Dopo l'impostazione, il client .net redis aggiunge un errore di cache come segue:

Il comando OOM non è consentito quando la memoria > 'maxmemory'.
# POLITICA MAXMEMORY: come Redis selezionerà cosa rimuovere quando maxmemory
# è raggiunto. Puoi scegliere tra cinque comportamenti:
#
# volatile-lru -> rimuovere la chiave con un set di scadenza usando un algoritmo LRU
# allkeys-lru -> rimuovere qualsiasi chiave secondo l'algoritmo LRU
# volatile-random -> rimuovere una chiave casuale con un set di scadenza
# tutte le chiavi casuali -> rimuovere una chiave casuale, qualsiasi chiave
# volatile-ttl -> rimuovere la chiave con il tempo di scadenza più vicino (minor TTL)
# noeviction - > non scadono affatto, restituiscono solo un errore durante le operazioni di scrittura
#
# Nota: con una delle politiche sopra elencate, Redis restituirà un errore alla scrittura
# Operazioni, quando non ci sono chiavi adatte per lo sfratto.
#
# Alla data di stesura questi comandi sono: set setnx setex append
# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
# Sinter Sinterstore Sunion Unionstore Sdiff Sdiffstore Zadd ZincRby
# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
# getset mset msetnx ordinamento esecutivo
#
# Il predefinito è:
#
# Sfratto della politica MaxMemory
#MAXMEMORY策略: Quando MAXMEMORY

#到达. Puoi scegliere tra cinque comportamenti:

#

#volatile LRU-> utilizza l'algoritmo LRU per rimuovere le chiavi con insiemi di scadenza

#allkeys LRU-> eliminare qualsiasi chiave secondo l'algoritmo LRU

#volatile casuale - > rimuovere chiavi casuali con set scaduti

#allkeys > casuali eliminano chiavi casuali, chiavi arbitrarie

#volatile TTL-> Elimina la chiave con il tempo di scadenza più vicino (TTL minore)

#noeviction-> non scade affatto, restituisce solo errori di scrittura

#

#注意: Per una qualsiasi delle strategie sopra, Redis restituisce un errore alla scrittura

#操作, quando non c'è una chiave adatta per lo sfratto.

#

#在编写之日, questi comandi sono: set setnx setex append

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

#烧结店sunion sunionstore sdiff sdiff sdiffstore zadd zincrby

#zunionstore Zinterstore Hset Hset, HMSET Hincrby Incrby Decrby

#getset mset mset: ordinamento executiv

#

#默认值为:

#

#maxmemory策略无效
Devi anche impostare le seguenti configurazioni:

L'impostazione redis predefinita è molto conservativa, cioè non viene memorizzata dopo che il limite di memoria è stato superato, e la policy può essere modificata con l'algoritmo LRU (l'algoritmo meno usato recentemente) - le nuove informazioni memorizzate sostituiranno quelle vecchie.

Recensione:

Differenza di persistenza di Redis tra RDB e AOF
https://www.itsvse.com/thread-9555-1-1.html

L'installazione Docker esegue la cache Redis
https://www.itsvse.com/thread-8995-1-1.html

Gli esempi spiegano cosa sono la penetrazione della cache Ridis, la valanga della cache e la rottura della cache
https://www.itsvse.com/thread-8968-1-1.html

Wildcard Redis per eliminare le chiavi in massa
https://www.itsvse.com/thread-7957-1-1.html

Tutorial per l'installazione Redis 5.0.3 di CentOS 7
https://www.itsvse.com/thread-7201-1-1.html

Installa l'estensione Redis sotto php 5.5.7 sotto CentOS
https://www.itsvse.com/thread-7200-1-1.html

Quante chiavi possono essere memorizzate in un'istanza Redis e quali sono le chiavi e i valori massimi?
https://www.itsvse.com/thread-6848-1-1.html

La questione dei cinesi redis non può essere espressa correttamente
https://www.itsvse.com/thread-5032-1-1.html

Redis consente l'accesso remoto
https://www.itsvse.com/thread-5011-1-1.html

Windows non avvia il servizio Redis, errore 1067: Il processo termina inaspettatamente.
https://www.itsvse.com/thread-5010-1-1.html

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

Redis imposta le password di connessione e accesso remoti
https://www.itsvse.com/thread-4101-1-1.html

Redis svuota la cache dei dati
https://www.itsvse.com/thread-4027-1-1.html

Configurazione della persistenza di Redis e persistenza off
https://www.itsvse.com/thread-4012-1-1.html

La differenza tra salvataggio e salvataggio in redis
https://www.itsvse.com/thread-4010-1-1.html

Redis due metodi e principi di persistenza
https://www.itsvse.com/thread-4009-1-1.html

Redis ha tre modi per iniziare
https://www.itsvse.com/thread-4008-1-1.html

Metodo Redis per nascondere finestre da riga di comando
https://www.itsvse.com/thread-2988-1-1.html

Redis Hash Hash Hash Problema del Hash Value
https://www.itsvse.com/thread-2587-1-1.html

5 cose da sapere prima di usare Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis modifica il numero di porta predefinito e imposta la password di accesso
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bit download, indirizzo ufficiale del download
https://www.itsvse.com/thread-2576-1-1.html

Redis utilizza script Lua per spiegazioni dettagliate
https://www.itsvse.com/thread-9634-1-1.html

Test di prestazioni Redis Benchmark
https://www.itsvse.com/thread-9645-1-1.html

(Fine)






Precedente:Giudizio NPOI sul tipo di data della cella
Prossimo:Spiegazione dettagliata dell'Operazione Excel NPOI
 Padrone di casa| Pubblicato il 2023-7-12 21:08:55 |
Strategie di eliminazione a otto memoria Redis
https://www.itsvse.com/thread-10626-1-1.html
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com