Επικοινωνία με την υποστήριξη

Απαντάμε μέσω e-mail, συνήθως μέσα σε δύο ημέρες.

Το Google reCAPTCHA ελέγχει αυτή την υποβολή για κατάχρηση· δεδομένα αποστέλλονται στην Google. Το script φορτώνεται μόνο όταν ανοίξει αυτή η φόρμα.

← Όλα τα άρθρα

Ένα αρχείο 870 MB σε tmpfs και η επανεκκίνηση που ακολούθησε

Στις 28 Αυγούστου, στις 19:35, αποσυμπίεσα το αρχείο καταγραφής πρόσβασης μιας ημέρας στο /tmp ώστε να διαβαστούν δύο ημέρες με ένα πέρασμα. Στις 19:44 το μηχάνημα έκανε επανεκκίνηση.

τι διαθέτει το μηχάνημα και τι πήρε ένα αρχείο 3.794 MB μνήμης, από τα οποία το /tmp χωράει 1.900 870 MB γράφτηκαν εκεί στις 19:35 19:35 — το αρχείο καταγραφής μιας ημέρας αποσυμπιέζεται στο /tmp για να διαβαστούν δύο ημέρες μαζί 19:44 — το SSH σταματά να απαντά, ο ιστότοπος χρειάζεται 11 s αντί για 0,1 s 19:47 — το μηχάνημα επανέρχεται, χρόνος λειτουργίας 0 λεπτά η MariaDB ξεκινά με ανάκτηση μετά από κατάρρευση: ο τερματισμός δεν ήταν ομαλός το journal δεν επιβιώνει μετά από επανεκκίνηση, οπότε αυτό δεν αποδεικνύεται — μόνο χρονολογείται

Η ιδιότητα που δεν ελέγχθηκε

Σε αυτό το μηχάνημα το /tmp είναι tmpfs. Είναι μνήμη. Το df δείχνει 1,9 GB ελεύθερα και δεν λέει απολύτως τίποτα για το από πού προέρχεται αυτός ο χώρος, ενώ το μηχάνημα έχει συνολικά 3.794 MB.

Έτσι, ένα αρχείο 870 MB μπήκε στο ένα τέταρτο της μνήμης ενός μικρού διακομιστή που ταυτόχρονα εξυπηρετούσε έναν ιστότοπο και έτρεχε τη δοκιμαστική εργασία κάποιου άλλου. Εννέα λεπτά αργότερα το SSH σταμάτησε να δέχεται συνδέσεις, ο ιστότοπος απαντούσε σε 11 δευτερόλεπτα αντί για 0,1, και λίγο μετά επανήλθε με χρόνο λειτουργίας μηδέν λεπτά.

Τι μπορεί και τι δεν μπορεί να ειπωθεί

Η MariaDB ξεκίνησε με ανάκτηση μετά από κατάρρευση, που σημαίνει ότι ο τερματισμός δεν ήταν ομαλός. Πέρα από αυτό, η ειλικρινής απάντηση είναι ότι αυτό δεν μπορεί να αποδειχθεί: το journal σε αυτό το μηχάνημα είναι πτητικό, οπότε δεν επιβιώνει μετά από επανεκκίνηση, και δεν υπάρχει kern.log με γραμμή για έλλειψη μνήμης. Τα τεκμήρια είναι μια χρονοσφραγίδα εννέα λεπτά πριν από το συμβάν και ένα αρχείο σε λάθος θέση.

Αξίζει να καταγραφεί έτσι όπως είναι, και όχι ως συμπέρασμα. «Γέμισε τη μνήμη και ο πυρήνας τα παράτησε» είναι μια εύλογη ιστορία. Δεν είναι όμως μετρημένη, και η διαφορά μετράει εδώ περισσότερο από ό,τι θα μετρούσε η βεβαιότητα.

Ποια ήταν η ζημιά

Καμία που να μπορεί να βρεθεί. Το CHECK TABLE στους πέντε σημαντικότερους πίνακες επέστρεψε OK, το πλήθος γραμμών δεν είχε αλλάξει, η καταμέτρηση συνέχιζε να καταγράφει την ίδια ημέρα, και όλες οι δεκαέξι προγραμματισμένες εργασίες ήταν ανέπαφες. Ο ιστότοπος απαντούσε ξανά σε 0,14 δευτερόλεπτα.

Ένα πράγμα χάθηκε: μια εργασία μεγάλης διάρκειας που ανήκε σε άλλη συνεδρία στο ίδιο μηχάνημα. Δεν είχε καμία σχέση με αυτή τη δουλειά και έπεσε μαζί με όλα τα άλλα, και αυτό είναι το κομμάτι μιας διακοπής που κανένας τοπικός έλεγχος δεν αναφέρει.

Ο κανόνας που προέκυψε

Τα αρχεία καταγραφής εδώ έχουν μέγεθος 700 έως 900 MB την ημέρα. Η αποσυμπίεση ενός από αυτά στο /tmp σημαίνει ότι βάζεις το ένα τέταρτο της μνήμης του μηχανήματος σε ένα σημείο που μοιάζει με δίσκο και συμπεριφέρεται σαν RAM.

Τα μεγάλα ενδιάμεσα αρχεία πηγαίνουν στο /var/tmp ή σε έναν προσωπικό κατάλογο χρήστη, που βρίσκονται και τα δύο στον δίσκο. Ακόμη καλύτερα, δεν αποσυμπιέζονται καθόλου: το zcat -f file.gz | awk ... διαβάζει ως ροή και δεν χρειάζεται προορισμό. Κάθε μέτρηση στα άρθρα που ακολούθησαν έγινε με αυτόν τον τρόπο.

Τι ισχύει γενικότερα

Ένα σύστημα αρχείων αναφέρει πόσο χώρο έχει. Δεν αναφέρει από τι είναι φτιαγμένος αυτός ο χώρος, και τα δύο ερωτήματα έχουν διαφορετικές απαντήσεις ακριβώς στα συστήματα όπου αυτό μετράει περισσότερο.

Ο έλεγχος είναι μία γραμμή και παραλείφθηκε επειδή το αρχείο ήταν «προσωρινό». Όντως ήταν προσωρινό. Απλώς αυτή ήταν η λάθος ιδιότητα για να εστιάσει κανείς.

Διαφήμιση