Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 47166|Απάντηση: 1

[Πηγή] Redis MISCONF Το Redis έχει ρυθμιστεί για αποθήκευση στιγμιότυπων RDB

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 2021-5-14 21:18:50 | | | |
Χρησιμοποιώντας το StackExchange.Redis για να χειριστείτε την προσωρινή μνήμη redis, το σφάλμα είναι το εξής:

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.

Προσωρινή λύση, τροποποιήστε το αρχείο redis.windows.conf,Η υπηρεσία Redis πρέπει να επανεκκινηθεί, ορίζεται ως εξής:
Εάν δεν θέλετε να επανεκκινήσετε την υπηρεσία Redis, μπορείτε να χρησιμοποιήσετε την εντολή redis-cli για να τη ρυθμίσετε ως εξής:



Η εξήγηση έχει ως εξής:
# Από προεπιλογή, το Redis θα σταματήσει να δέχεται εγγραφές εάν είναι ενεργοποιημένα τα στιγμιότυπα RDB
# (τουλάχιστον ένα σημείο αποθήκευσης) και η τελευταία αποθήκευση στο παρασκήνιο απέτυχε.
# Αυτό θα κάνει τον χρήστη να συνειδητοποιήσει (με δύσκολο τρόπο) ότι τα δεδομένα δεν διατηρούνται
# στο δίσκο σωστά, διαφορετικά το πιθανότερο είναι ότι κανείς δεν θα το προσέξει και κάποιοι
# Η καταστροφή θα συμβεί.
#
# Εάν η διαδικασία αποθήκευσης στο παρασκήνιο αρχίσει να λειτουργεί ξανά, το Redis θα το κάνει
# να επιτρέπονται αυτόματα οι εγγραφές ξανά.
#
# Ωστόσο, εάν έχετε ρυθμίσει τη σωστή παρακολούθηση του διακομιστή Redis
# και επιμονή, μπορεί να θέλετε να απενεργοποιήσετε αυτήν τη δυνατότητα, ώστε το Redis να το κάνει
# συνεχίστε να εργάζεστε ως συνήθως ακόμα κι αν υπάρχουν προβλήματα με το δίσκο,
# δικαιώματα, και ούτω καθεξής.
Με απλά λόγια: Το Redis πρέπει να διαχωρίσει μια κύρια διαδικασία για να αποφύγει την προσποίηση θανάτου της κύριας διαδικασίας κατά την αποθήκευση δεδομένων στον σκληρό δίσκο και, στη συνέχεια, να ολοκληρώσει τη λειτουργία αποθήκευσης δεδομένων στον σκληρό δίσκο στη διαδικασία του πιρουνιού, εάν η κύρια διαδικασία χρησιμοποιεί 4 GB μνήμης, χρειάζονται επιπλέον 4 GB όταν χρειάζεται η υποδιεργασία του πιρουνιού, αυτή τη στιγμή η μνήμη δεν είναι αρκετή, το πιρούνι αποτυγχάνει και, στη συνέχεια, αποτυγχάνει και ο σκληρός δίσκος εξοικονόμησης δεδομένων.

Για να δείτε τα αρχεία καταγραφής redis, πρέπει να διαμορφώσετε το redis.windows.conf ως εξής:

# Καθορίστε το όνομα του αρχείου καταγραφής. Επίσης το 'stdout' μπορεί να χρησιμοποιηθεί για να εξαναγκάσει
# Redis για να συνδεθείτε στην τυπική έξοδο.
αρχείο καταγραφής "E:/Redis-x64-3.2.100/redis.txt"

Οι εξαιρέσεις καταγραφής είναι οι εξής:

[8984] 14 Μαΐου 14:05:09.060 * Η αποθήκευση στο παρασκήνιο ξεκίνησε από το pid 8672
[8672] 14 Μαΐου 14:05:09.169 #
Η έκδοση του Redis για Windows δεσμεύει μνήμη σωρού από το αρχείο σελιδοποίησης συστήματος
για κοινή χρήση με τη διχαλωτή διεργασία που χρησιμοποιείται για λειτουργίες εμμονής. Αυτή τη στιγμή δεν υπάρχει επαρκής διαθέσιμος συνεχόμενος ελεύθερος χώρος στο
αρχείο σελιδοποίησης συστήματος. Μπορείτε να αυξήσετε το μέγεθος του αρχείου σελιδοποίησης συστήματος.
Μερικές φορές μια επανεκκίνηση θα ανασυγκροτήσει το αρχείο σελιδοποίησης του συστήματος επαρκώς για
αυτή η λειτουργία να ολοκληρωθεί με επιτυχία.

Ο Redis δεν μπορεί να συνεχίσει. Έξοδος.
[8984] 14 Μαΐου 14:05:09.278 # Η λειτουργία του πιρουνιού απέτυχε



Μετά από ανάλυση, αποδείχθηκε ότι το πρόβλημα με τη διαμόρφωση του μέγιστου μεγέθους σωρού "maxheap" οφειλόταν σε ανεπαρκή διαθέσιμη μνήμη.

Λύση

Ανοίξτε το αρχείο διαμόρφωσης του Redis "redis.windows.conf" και βρείτε την ακόλουθη ενότητα κώδικα:


# Ο σωρός Redis πρέπει να είναι μεγαλύτερος από την τιμή που καθορίζεται από τη μέγιστη μνήμη
#, καθώς ο εκχωρητής σωρού έχει τις δικές του απαιτήσεις μνήμης και
# Ο κατακερματισμός του σωρού είναι αναπόφευκτος. Εάν είναι μόνο η σημαία maxmemory
#, το maxheap θα οριστεί στο 1.5*maxmemory. Εάν η σημαία maxheap είναι
# Καθορίζεται μαζί με το MaxMemory, η σημαία Maxheap θα είναι αυτόματα
# αυξάνεται εάν είναι μικρότερη από 1,5*maxmemory.
#  
# μέγιστο σωρό <bytes>

Η προσθήκη αυτής της ρύθμισης είναι καλή,Η υπηρεσία Redis αποτυγχάνει να ξεκινήσει!!!!!!!
Η προεπιλεγμένη τιμή είναι: maxheap 1024000000≈976.56M

Δεν βρήκα αυτό το σχόλιο στο αρχείο conf, βρήκα κάτι σαν αυτό:
# Μην χρησιμοποιείτε περισσότερη μνήμη από την καθορισμένη ποσότητα byte.
# Όταν συμπληρωθεί το όριο μνήμης, το Redis θα προσπαθήσει να αφαιρέσει τα πλήκτρα
# σύμφωνα με την πολιτική έξωσης που έχει επιλεγεί (βλ. maxmemory-policy).
#
# Εάν το Redis δεν μπορεί να αφαιρέσει κλειδιά σύμφωνα με την πολιτική ή εάν η πολιτική είναι
# που έχει οριστεί σε 'noeviction', το Redis θα αρχίσει να απαντά με σφάλματα στις εντολές
# που θα χρησιμοποιούσαν περισσότερη μνήμη, όπως SET, LPUSH και ούτω καθεξής, και θα συνεχίσουν
# για να απαντήσετε σε εντολές μόνο για ανάγνωση όπως το GET.
#
# Αυτή η επιλογή είναι συνήθως χρήσιμη όταν χρησιμοποιείτε το Redis ως κρυφή μνήμη LRU ή για να ορίσετε
# ένα όριο σκληρής μνήμης για μια περίπτωση (χρησιμοποιώντας την πολιτική «noeviction»).
#
# ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Εάν έχετε slaves συνδεδεμένα σε ένα στιγμιότυπο με ενεργοποιημένη τη μέγιστη μνήμη,
# Το μέγεθος των buffer εξόδου που απαιτούνται για την τροφοδοσία των slaves αφαιρείται
# από τον αριθμό της χρησιμοποιούμενης μνήμης, έτσι ώστε τα προβλήματα δικτύου / επανασυγχρονισμοί
# δεν ενεργοποιεί έναν βρόχο όπου τα πλήκτρα εκδιώκονται και με τη σειρά του η έξοδος
# buffer των slaves είναι γεμάτο με DEL των κλειδιών που εκδιώχθηκαν ενεργοποιώντας τη διαγραφή
# περισσότερων κλειδιών και ούτω καθεξής μέχρι να αδειάσει τελείως η βάση δεδομένων.
#
# Με λίγα λόγια... Εάν έχετε συνδεδεμένους σκλάβους, προτείνεται να ορίσετε ένα χαμηλότερο
# όριο για maxmemory έτσι ώστε να υπάρχει κάποια ελεύθερη μνήμη RAM στο σύστημα για slave
# buffer εξόδου (αλλά αυτό δεν χρειάζεται αν η πολιτική είναι 'noeviction').
#
# ΠΡΟΕΙΔΟΠΟΙΗΣΗ: η μη ρύθμιση της μέγιστης μνήμης θα προκαλέσει τον τερματισμό του Redis με ένα
# Εξαίρεση εκτός μνήμης εάν συμπληρωθεί το όριο σωρού.
#
# ΣΗΜΕΙΩΣΗ: δεδομένου ότι το Redis χρησιμοποιεί το αρχείο σελιδοποίησης συστήματος για να εκχωρήσει τη μνήμη σωρού,
# η χρήση μνήμης του συνόλου εργασίας που εμφανίζεται από τη Διαχείριση εργασιών των Windows ή από άλλα
# εργαλεία όπως το ProcessExplorer δεν θα είναι πάντα ακριβή. Για παράδειγμα, σωστά
# μετά από αποθήκευση στο παρασκήνιο των αρχείων RDB ή AOF, η τιμή του συνόλου εργασίας
# μπορεί να μειωθεί σημαντικά. Για να ελέγξετε τη σωστή ποσότητα μνήμης που χρησιμοποιείται
# από τον redis-server για να αποθηκεύσετε τα δεδομένα, χρησιμοποιήστε την εντολή INFO client. Το INFO
# εμφανίζει μόνο τη μνήμη που χρησιμοποιείται για την αποθήκευση των δεδομένων redis, όχι την επιπλέον
# μνήμη που χρησιμοποιείται από τη διαδικασία των Windows για τις δικές της απαιτήσεις. Th3 επιπλέον ποσό
# της μνήμης που δεν αναφέρεται από την εντολή INFO μπορεί να υπολογιστεί αφαιρώντας το
# Μέγιστο σύνολο εργασίας που αναφέρεται από τη Διαχείριση εργασιών των Windows και το used_memory_peak
# ανέφερε η εντολή INFO.
#
# μέγιστη μνήμη <bytes>

Προειδοποίηση: Εάν επιτευχθεί το όριο σωρού, η μη ρύθμιση της μέγιστης μνήμης θα προκαλέσει τον τερματισμό του Redis με εξαίρεση εκτός μνήμης.

Σημείωση: ΛόγωΤο Redis χρησιμοποιεί αρχεία σελιδοποίησης συστήματος για την εκχώρηση μνήμης σωρού

Η Διαχείριση εργασιών των Windows ή άλλα εργαλεία όπως το ProcessExplorer δεν δείχνουν πάντα ακριβή χρήση μνήμης συνόλου εργασίας. Με απλά λόγια,Η χρήση μνήμης που εμφανίζεται από τη Διαχείριση εργασιών δεν είναι ακριβής!!!

Χρησιμοποιήστε την εντολή info για να υποβάλετε ερώτημα ως εξής:

# Μνήμη
used_memory:2011338768
used_memory_human:1,87 γρ
used_memory_rss:2011279992
used_memory_rss_human:1,87 γρ
used_memory_peak:2011338768
used_memory_peak_human:1,87 γρ
total_system_memory:0
total_system_memory_human:0Β
used_memory_lua:37888
used_memory_lua_human:37.00Κ
maxmemory:0
maxmemory_human:0Β
maxmemory_policy:μη έξωση
mem_fragmentation_ratio:1.00
mem_allocator:jemalloc-3.6.0



Οι ρυθμίσεις είναι οι εξής:

1073741824 byte = 1G
Μετά τη ρύθμιση, το πρόγραμμα-πελάτης redis .net προσθέτει ένα σφάλμα προσωρινής μνήμης ως εξής:

Η εντολή OOM δεν επιτρέπεται όταν χρησιμοποιείται μνήμη > 'maxmemory'.
# ΠΟΛΙΤΙΚΗ MAXMEMORY: πώς το Redis θα επιλέξει τι θα αφαιρέσει όταν το maxmemory
#. Μπορείτε να επιλέξετε ανάμεσα σε πέντε συμπεριφορές:
#
# volatile-lru -> αφαιρέστε το κλειδί με ένα σύνολο λήξης χρησιμοποιώντας έναν αλγόριθμο LRU
# allkeys-lru -> αφαιρέστε οποιοδήποτε κλειδί σύμφωνα με τον αλγόριθμο LRU
# πτητικό-τυχαίο -> αφαιρέστε ένα τυχαίο κλειδί με ένα σύνολο λήξης
# allkeys-random -> αφαιρέστε ένα τυχαίο κλειδί, οποιοδήποτε κλειδί
# volatile-ttl -> αφαιρέστε το κλειδί με τον πλησιέστερο χρόνο λήξης (μικρό TTL)
# noeviction -> δεν λήγουν καθόλου, απλώς επιστρέψτε ένα σφάλμα στις λειτουργίες εγγραφής
#
# Σημείωση: με οποιαδήποτε από τις παραπάνω πολιτικές, το Redis θα επιστρέψει ένα σφάλμα κατά την εγγραφή
# λειτουργίες, όταν δεν υπάρχουν κατάλληλα κλειδιά για έξωση.
#
# Κατά την ημερομηνία σύνταξης αυτές οι εντολές είναι: set setnx setex append
# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
# sinterstore sunion sunionstore sdiff sdiff sdiff zadd zincrby
# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
# getset mset msetnx exec sort
#
# Η προεπιλογή είναι:
#
# maxmemory-πολιτική έξωση
#MAXMEMORY策略: Όταν το MAXMEMORY

#到达. Μπορείτε να επιλέξετε από πέντε συμπεριφορές:

#

#volatile το LRU-> χρησιμοποιεί τον αλγόριθμο LRU για να αφαιρέσει κλειδιά με σύνολα λήξης

#allkeys LRU-> διαγράψτε οποιοδήποτε κλειδί σύμφωνα με τον αλγόριθμο LRU

#volatile τυχαία - > αφαιρέσετε τυχαία κλειδιά με ληγμένα σετ

#allkeys τυχαία > διαγραφή τυχαίων κλειδιών, αυθαίρετων κλειδιών

#volatile TTL-> Διαγράψτε το κλειδί με τον πλησιέστερο χρόνο λήξης (Minor TTL)

#noeviction-> δεν λήγει καθόλου, επιστρέφει μόνο σφάλματα λειτουργίας εγγραφής

#

#注意: Για οποιαδήποτε από τις παραπάνω στρατηγικές, το Redis επιστρέφει ένα σφάλμα κατά την εγγραφή

#操作, όταν δεν υπάρχει κατάλληλο κλειδί για έξωση.

#

#在编写之日, αυτές οι εντολές είναι: set setnx setex append

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

#烧结店sunion sunionstore sdiff sdiff zadd zincrby

#zunionstore Zinterstore Hset Hsetnx HMSET Hincrby Incrby Decrby

#getset mset msetnx exec sorting

#

#默认值为:

#

#maxmemory策略无效
Πρέπει επίσης να ρυθμίσετε τις ακόλουθες διαμορφώσεις:

Η προεπιλεγμένη ρύθμιση redis είναι πολύ συντηρητική, δηλαδή δεν αποθηκεύεται μετά την υπέρβαση του ορίου μνήμης και η πολιτική μπορεί να αλλάξει στον αλγόριθμο LRU (ο λιγότερο χρησιμοποιούμενος αλγόριθμος πρόσφατα) - οι πρόσφατα αποθηκευμένες πληροφορίες θα αντικαταστήσουν τις παλιές πληροφορίες.

Αναθεώρηση:

Διαφορά επιμονής Redis μεταξύ RDB και AOF
https://www.itsvse.com/thread-9555-1-1.html

Η εγκατάσταση του Docker εκτελεί την προσωρινή μνήμη Redis
https://www.itsvse.com/thread-8995-1-1.html

Παραδείγματα εξηγούν τι είναι η διείσδυση της κρυφής μνήμης Redis, η χιονοστιβάδα της κρυφής μνήμης και η ανάλυση της κρυφής μνήμης
https://www.itsvse.com/thread-8968-1-1.html

Redis wildcards για μαζική διαγραφή κλειδιών
https://www.itsvse.com/thread-7957-1-1.html

Εγκατάσταση του CentOS 7 Εκμάθηση Redis 5.0.3
https://www.itsvse.com/thread-7201-1-1.html

Εγκαταστήστε την επέκταση redis στην php 5.5.7 στο CentOS
https://www.itsvse.com/thread-7200-1-1.html

Πόσα κλειδιά μπορούν να αποθηκευτούν σε μια παρουσία redis και ποια είναι τα μέγιστα κλειδιά και τιμές;
https://www.itsvse.com/thread-6848-1-1.html

Το ζήτημα των redis Chinese δεν μπορεί να εμφανιστεί σωστά
https://www.itsvse.com/thread-5032-1-1.html

Το Redis επιτρέπει την απομακρυσμένη πρόσβαση
https://www.itsvse.com/thread-5011-1-1.html

Τα Windows αποτυγχάνουν να ξεκινήσουν την υπηρεσία Redis, σφάλμα 1067: Η διαδικασία τερματίζεται απροσδόκητα.
https://www.itsvse.com/thread-5010-1-1.html

Το CentOS εγκατέστησε το Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

Το Redis ρυθμίζει την απομακρυσμένη σύνδεση και τους κωδικούς πρόσβασης
https://www.itsvse.com/thread-4101-1-1.html

Το Redis αδειάζει την προσωρινή μνήμη δεδομένων
https://www.itsvse.com/thread-4027-1-1.html

Διαμόρφωση επιμονής Redis και Off Persistence
https://www.itsvse.com/thread-4012-1-1.html

Η διαφορά μεταξύ save και bgsave στο redis
https://www.itsvse.com/thread-4010-1-1.html

Redis δύο μέθοδοι και αρχές εμμονής
https://www.itsvse.com/thread-4009-1-1.html

Το Redis έχει τρεις τρόπους για να ξεκινήσει
https://www.itsvse.com/thread-4008-1-1.html

Μέθοδος Redis για απόκρυψη παραθύρων γραμμής εντολών
https://www.itsvse.com/thread-2988-1-1.html

Πρόβλημα τιμής κατακερματισμού κατακερματισμού Redis
https://www.itsvse.com/thread-2587-1-1.html

5 πράγματα που πρέπει να γνωρίζετε πριν χρησιμοποιήσετε το Redis
https://www.itsvse.com/thread-2580-1-1.html

Το Redis τροποποιεί τον προεπιλεγμένο αριθμό θύρας και ορίζει τον κωδικό πρόσβασης
https://www.itsvse.com/thread-2577-1-1.html

Λήψη Redis windows 64-bit, επίσημη διεύθυνση λήψης
https://www.itsvse.com/thread-2576-1-1.html

Το Redis χρησιμοποιεί σενάρια Lua για λεπτομερείς εξηγήσεις
https://www.itsvse.com/thread-9634-1-1.html

Δοκιμή απόδοσης Redis Benchmark
https://www.itsvse.com/thread-9645-1-1.html

(Τέλος)






Προηγούμενος:Κρίση NPOI του τύπου ημερομηνίας κυψέλης
Επόμενος:Λειτουργία NPOI Excel Λεπτομερής Επεξήγηση
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2023-7-12 21:08:55 |
Στρατηγικές εξάλειψης οκτώ μνήμης Redis
https://www.itsvse.com/thread-10626-1-1.html
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com