Πώς να αυξήσετε το όριο του αριθμού των ανοιχτών αρχείων στο Linux


Στο Linux, μπορείτε να αλλάξετε τη μέγιστη ποσότητα ανοιχτών αρχείων. Μπορείτε να τροποποιήσετε αυτόν τον αριθμό χρησιμοποιώντας την εντολή ulimit. Σας παρέχει τη δυνατότητα να ελέγχετε τους διαθέσιμους πόρους για το κέλυφος ή τη διαδικασία που ξεκίνησε από αυτό.

Σε αυτό το σύντομο σεμινάριο θα σας δείξουμε πώς να ελέγξετε το τρέχον όριο των ανοιχτών αρχείων και των περιγραφών αρχείων, αλλά για να το κάνετε αυτό, θα πρέπει να έχετε πρόσβαση root στο σύστημά σας.

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

Βρείτε το Linux Open File Limit

Η τιμή αποθηκεύεται σε:

# cat /proc/sys/fs/file-max

818354

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

Για παράδειγμα, σε έναν διακομιστή CentOS δικό μου, το όριο ορίστηκε σε 818354, ενώ στον διακομιστή Ubuntu που τρέχω στο σπίτι το προεπιλεγμένο όριο ήταν ορίστηκε σε 176772.

Εάν θέλετε να δείτε τα σκληρά και μαλακά όρια, μπορείτε να χρησιμοποιήσετε τις ακόλουθες εντολές:

Ελέγξτε το Hard Limit στο Linux

# ulimit -Hn

4096

Ελέγξτε τα Soft Limits στο Linux

# ulimit -Sn

1024

Για να δείτε τις τιμές hard και soft για διαφορετικούς χρήστες, μπορείτε απλώς να αλλάξετε χρήστη με “su” στον χρήστη που θέλετε να ελέγξετε τα όρια.

Για παράδειγμα:

# su marin
$ ulimit -Sn

1024
$ ulimit -Hn

4096

Πώς να ελέγξετε τα όρια περιγραφής αρχείων σε όλο το σύστημα στο Linux

Εάν εκτελείτε διακομιστή, ορισμένες από τις εφαρμογές σας ενδέχεται να απαιτούν υψηλότερα όρια για ανοιχτούς περιγραφείς αρχείων. Ένα καλό παράδειγμα είναι οι υπηρεσίες MySQL/MariaDB ή ο διακομιστής ιστού Apache.

Μπορείτε να αυξήσετε το όριο των ανοιγμένων αρχείων στο Linux επεξεργάζοντας την οδηγία του πυρήνα fs.file-max. Για το σκοπό αυτό, μπορείτε να χρησιμοποιήσετε το βοηθητικό πρόγραμμα sysctl.

Το Sysctl χρησιμοποιείται για τη διαμόρφωση παραμέτρων του πυρήνα κατά το χρόνο εκτέλεσης.

Για παράδειγμα, για να αυξήσετε το όριο ανοιχτού αρχείου σε 500000, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή ως root:

# sysctl -w fs.file-max=500000

Μπορείτε να ελέγξετε την τρέχουσα τιμή για τα ανοιχτά αρχεία με την ακόλουθη εντολή:

$ cat /proc/sys/fs/file-max

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

# vi /etc/sysctl.conf

Προσθέστε την ακόλουθη γραμμή:

fs.file-max=500000

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

# cat /proc/sys/fs/file-max

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

# sysctl -p

Ορισμός ορίων ανοιχτού αρχείου επιπέδου χρήστη στο Linux

Τα παραπάνω παραδείγματα έδειξαν πώς να ορίσετε καθολικά όρια, αλλά ίσως θέλετε να εφαρμόσετε όρια ανά χρήστη. Για το σκοπό αυτό, ως χρήστης root, θα χρειαστεί να επεξεργαστείτε το ακόλουθο αρχείο:

# vi /etc/security/limits.conf

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

Οι γραμμές που πρέπει να προσθέσετε λαμβάνουν τις ακόλουθες παραμέτρους:

<domain>        <type>  <item>  <value>

Ακολουθεί ένα παράδειγμα ορισμού ορίων soft και hard για το χρήστη marin:

## Example hard limit for max opened files
marin        hard nofile 4096
## Example soft limit for max opened files
marin        soft nofile 1024

Τελικές σκέψεις

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

Ενώ μόλις χαράξαμε την επιφάνεια, σας συνιστώ να ρίξετε μια πιο λεπτομερή ματιά και να διαβάσετε σχετικά με τα /etc/sysctl.conf και /etc/security/limits.conf και μάθετε πώς να τα χρησιμοποιείτε. Θα σας βοηθήσουν πολύ μια μέρα.