Όπως κάθε άλλο λειτουργικό σύστημα, το GNU/Linux έχει εφαρμόσει αποτελεσματικά τη διαχείριση μνήμης και ακόμη περισσότερο. Αλλά αν κάποια διαδικασία κατατρώει τη μνήμη σας και θέλετε να τη διαγράψετε, το Linux παρέχει έναν τρόπο για να ξεπλύνετε ή να διαγράψετε την κρυφή μνήμη ram.
Πώς να καθαρίσετε την προσωρινή μνήμη στο Linux;
Κάθε σύστημα Linux έχει τρεις επιλογές για εκκαθάριση της προσωρινής μνήμης χωρίς διακοπή διεργασιών ή υπηρεσιών.
1. Εκκαθάριση μόνο PageCache.
# sync; echo 1 > /proc/sys/vm/drop_caches
2. Καθαρίστε dentries and inodes.
# sync; echo 2 > /proc/sys/vm/drop_caches
3. Εκκαθαρίστε pagecache, dentries, and inodes.
# sync; echo 3 > /proc/sys/vm/drop_caches
Επεξήγηση της παραπάνω εντολής.
Ο συγχρονισμός θα ξεπλύνει την προσωρινή μνήμη του συστήματος αρχείων. Εντολή Διαχωρίζεται με “;”
διαδοχική εκτέλεση. Το κέλυφος περιμένει κάθε εντολή να τερματιστεί πριν εκτελέσει την επόμενη εντολή της ακολουθίας. Όπως αναφέρεται στην τεκμηρίωση του πυρήνα, η εγγραφή στο drop_cache θα καθαρίσει την προσωρινή μνήμη χωρίς να σκοτώσει καμία εφαρμογή/υπηρεσία, η εντολή echo κάνει τη δουλειά της εγγραφής σε αρχείο.
Εάν πρέπει να διαγράψετε την προσωρινή μνήμη του δίσκου, η πρώτη εντολή είναι ασφαλέστερη στην επιχείρηση και την παραγωγή, όπως “...echo 1 > ….”
θα διαγράψει μόνο το PageCache . Δεν συνιστάται η χρήση της τρίτης παραπάνω επιλογής “...echo 3 >”
στην παραγωγή έως ότου ξέρετε τι κάνετε, καθώς θα διαγράψει την προσωρινή μνήμη σελίδων , τις οδοντοστοιχίες και τα inodes .
Είναι καλή ιδέα να ελευθερώσετε Buffer και Cache στο Linux που μπορεί να χρησιμοποιούνται από το Linux Kernel;
Δωρεάν buffer και cache στο Linux
Όταν εφαρμόζετε διάφορες ρυθμίσεις και θέλετε να ελέγξετε εάν όντως εφαρμόζεται ειδικά στο εκτεταμένο σημείο αναφοράς I/O, τότε ίσως χρειαστεί να διαγράψετε την προσωρινή μνήμη buffer. Μπορείτε να ρίξετε την προσωρινή μνήμη όπως εξηγήθηκε παραπάνω χωρίς να κάνετε επανεκκίνηση του συστήματος, δηλαδή, χωρίς να απαιτείται χρόνος διακοπής λειτουργίας.
Το Linux είναι σχεδιασμένο με τέτοιο τρόπο ώστε να κοιτάζει στην κρυφή μνήμη του δίσκου πριν κοιτάξει στον δίσκο. Εάν βρει τον πόρο στη μνήμη cache, τότε το αίτημα δεν φτάνει στο δίσκο. Εάν καθαρίσουμε τη μνήμη cache, η κρυφή μνήμη του δίσκου θα είναι λιγότερο χρήσιμη καθώς το λειτουργικό σύστημα θα αναζητήσει τον πόρο στο δίσκο.
Επιπλέον, θα επιβραδύνει επίσης το σύστημα για μερικά δευτερόλεπτα ενώ η προσωρινή μνήμη καθαρίζεται και κάθε πόρος που απαιτείται από το λειτουργικό σύστημα φορτώνεται ξανά στη μνήμη cache του δίσκου.
Τώρα θα δημιουργήσουμε ένα σενάριο κελύφους για αυτόματη διαγραφή της κρυφής μνήμης RAM καθημερινά στις 2 π.μ. μέσω μιας εργασίας προγραμματιστή cron. Δημιουργήστε ένα σενάριο κελύφους clearcache.sh και προσθέστε τις ακόλουθες γραμμές.
#!/bin/bash # Note, we are using "echo 3", but it is not recommended in production instead use "echo 1" echo "echo 3 > /proc/sys/vm/drop_caches"
Ορίστε δικαιώματα εκτέλεσης στο αρχείο clearcache.sh .
# chmod 755 clearcache.sh
Τώρα μπορείτε να καλέσετε το σενάριο όποτε σας ζητηθεί να διαγράψετε την κρυφή μνήμη ram.
Τώρα ορίστε ένα cron για να διαγράφει την κρυφή μνήμη RAM κάθε μέρα στις 2 π.μ. Ανοίξτε το crontab για επεξεργασία.
# crontab -e
Προσθέστε την παρακάτω γραμμή, αποθηκεύστε και βγείτε για να την εκτελείτε στις 2 π.μ. καθημερινά.
0 2 * * * /path/to/clearcache.sh
Για περισσότερες λεπτομέρειες σχετικά με τον τρόπο ολοκλήρωσης μιας εργασίας, ίσως θέλετε να ανατρέξετε στο άρθρο μας σχετικά με τις 11 εργασίες προγραμματισμού Cron .
Είναι καλή ιδέα η αυτόματη εκκαθάριση της προσωρινής μνήμης RAM στον διακομιστή παραγωγής;
Διαγραφή της προσωρινής μνήμης RAM στον διακομιστή παραγωγής Linux;
Οχι! δεν είναι. Σκεφτείτε μια κατάσταση όταν έχετε προγραμματίσει το σενάριο να διαγράφει την κρυφή μνήμη ram κάθε μέρα στις 2 π.μ. Κάθε μέρα στις 2 π.μ. το σενάριο εκτελείται και ξεπλένει την κρυφή μνήμη RAM. Μια μέρα για οποιονδήποτε λόγο μπορεί να είναι περισσότερο από το αναμενόμενο οι χρήστες είναι συνδεδεμένοι στον ιστότοπό σας και αναζητούν πόρους από τον διακομιστή σας.
Ταυτόχρονα, το προγραμματισμένο σενάριο εκτελείται και διαγράφει τα πάντα στη μνήμη cache. Τώρα όλοι οι χρήστες ανακτούν δεδομένα από το δίσκο. Θα οδηγήσει σε συντριβή διακομιστή και θα καταστρέψει τη βάση δεδομένων. Επομένως, καθαρίστε την κρυφή μνήμη ram μόνο όταν απαιτείται, και γνωρίζετε τα βήματά σας, διαφορετικά είστε διαχειριστής συστήματος Cargo Cult.
Πώς να καθαρίσετε το χώρο ανταλλαγής στο Linux;
Εάν θέλετε να εκκαθαρίσετε το χώρο Swap, ίσως θέλετε να εκτελέσετε την παρακάτω εντολή.
# swapoff -a && swapon -a
Επίσης, μπορείτε να προσθέσετε την παραπάνω εντολή σε ένα σενάριο cron παραπάνω, αφού κατανοήσετε όλους τους σχετικούς κινδύνους.