Sobes.tech
Middle

Τι γνωρίζετε για τα ulimits και πώς να τα χρησιμοποιήσετε σε συστήματα Linux;

sobes.tech AI

Απάντηση από AI

Ulimits (όρια χρηστών) — είναι περιορισμοί στην κατανάλωση πόρων από τις διαδικασίες του λειτουργικού συστήματος Linux. Βοηθούν στην αποτροπή εξάντλησης των συστημικών πόρων από μια διαδικασία και διασφαλίζουν τη σταθερότητα.

Οι βασικοί πόροι που μπορούν να περιοριστούν με τη βοήθεια των ulimits:

  • Χρόνος CPU (δευτερόλεπτα): Ο μέγιστος χρόνος λειτουργίας της CPU για μια διαδικασία.
  • Μέγεθος αρχείου (μπλοκ): Το μέγιστο μέγεθος αρχείου που μπορεί να δημιουργήσει ο χρήστης.
  • Μέγεθος τμήματος δεδομένων (kbytes): Το μέγιστο μέγεθος του τμήματος δεδομένων της διαδικασίας.
  • Μέγεθος στοίβας (kbytes): Το μέγιστο μέγεθος της στοίβας της διαδικασίας.
  • Μέγεθος αρχείου πυρήνα (μπλοκ): Το μέγιστο μέγεθος του dump πυρήνα.
  • Μέγεθος κατοικημένης μνήμης (kbytes): Το μέγιστο μέγεθος της κατοικημένης μνήμης της διαδικασίας (συχνά δεν υποστηρίζεται ή έχει μόνο "soft" περιορισμό).
  • Αριθμός διαδικασιών: Ο μέγιστος αριθμός διαδικασιών που μπορεί να δημιουργήσει ο χρήστης.
  • Ανοιχτά αρχεία: Ο μέγιστος αριθμός αρχείων που μπορεί να ανοίξει η διαδικασία.
  • Μπλοκαρισμένη μνήμη ([kbytes]): Το μέγιστο μέγεθος της μνήμης που μπορεί να μπλοκαριστεί στη RAM.
  • Μέγιστες διαδικασίες ανά χρήστη: Ο μέγιστος αριθμός διαδικασιών που διατίθενται σε έναν συγκεκριμένο χρήστη (αγνοεί το ID άλλου χρήστη κατά τον υπολογισμό).
  • Αναμονή σημάτων: Ο μέγιστος αριθμός σημάτων που μπορούν να αναμένουν στη σειρά για μια συγκεκριμένη διαδικασία.
  • Μέγεθος ουράς μηνυμάτων (bytes): Το μέγιστο μέγεθος της ουράς μηνυμάτων POSIX.
  • Προτεραιότητα σε πραγματικό χρόνο: Η μέγιστη προτεραιότητα σε πραγματικό χρόνο που μπορεί να οριστεί.
  • Προτεραιότητα Nice: Η μέγιστη "μαλακή" τιμή προτεραιότητας.
  • Μέγεθος μνήμης σε πραγματικό χρόνο (kbytes): Το μέγιστο μέγεθος μνήμης που έχει μπλοκαριστεί για εργασίες σε πραγματικό χρόνο.

Οι ulimits υπάρχουν σε δύο τύπους:

  • Μαλακό όριο: Το τρέχον, ενεργά εφαρμοζόμενο όριο. Ο χρήστης ή η διαδικασία μπορεί να αυξήσει το Μαλακό όριο, αλλά όχι πάνω από το Σκληρό.
  • Σκληρό όριο: Το μέγιστο δυνατό όριο που ορίζεται από τον διαχειριστή. Μόνο ο υπερχρήστης (root) μπορεί να αυξήσει το Σκληρό όριο.

Προβολή τρεχόντων ulimits:

Χρησιμοποιήστε την εντολή ulimit σε ένα περιβάλλον γραμμής εντολών (π.χ., bash).

# Εμφάνιση όλων των μαλακών ορίων
ulimit -a

# Εμφάνιση του σκληρού ορίου για ανοιχτά αρχεία
ulimit -Hn

Ορισμός ulimits:

Τα ulimits μπορούν να οριστούν προσωρινά για την τρέχουσα συνεδρία ή διαδικασία, ή μόνιμα.

Προσωρινός ορισμός:

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

# Ορισμός μαλακού ορίου για ανοιχτά αρχεία σε 4096
ulimit -Sn 4096

# Ορισμός σκληρού ορίου για τον αριθμό διαδικασιών σε 100
ulimit -Hu 100

Μόνιμος ορισμός:

Επεξεργαστείτε το αρχείο /etc/security/limits.conf ή αρχεία στον κατάλογο /etc/security/limits.d/. Αυτή η μέθοδος απαιτεί δικαιώματα υπερχρήστη και εφαρμόζεται κατά την είσοδο του χρήστη στο σύστημα (μέσω PAM).

Μορφή αρχείου /etc/security/limits.conf:

# <πεδίο>  <τύπος>  <αντικείμενο>  <αξία>
# Το πεδίο μπορεί να είναι: user (@group), group (@group), wildcard (*)
# Ο τύπος μπορεί να είναι: soft, hard, - (και τα δύο)
# Το αντικείμενο - τύπος πόρου (nofile, nproc κ.λπ.)
# Η αξία - η περιοριστική τιμή

*       soft    nofile  4096       # Όλοι οι χρήστες, soft limit για ανοιχτά αρχεία 4096
@mygroup hard    nproc   256        # Ομάδα mygroup, hard limit για διαδικασίες 256
myuser  -       stack   8192       # Χρήστης myuser, και τα δύο όρια για στοίβα 8192 kB

Μετά την αλλαγή στο /etc/security/limits.conf, απαιτείται επανασύνδεση για να εφαρμοστούν οι αλλαγές.

Οι ulimits συχνά χρησιμοποιούνται για:

  • Πρόληψη "fork bombs" (διαδικασίες που δημιουργούν πολλές θυγατρικές διαδικασίες).
  • Περιορισμό της μνήμης που καταναλώνουν οι διαδικασίες, για την αποφυγή καταστάσεων "out of memory".
  • Περιορισμό του αριθμού των ανοιχτών αρχείων, σημαντικό για εφαρμογές δικτύου και βάσεις δεδομένων.
  • Έλεγχο της κατανάλωσης CPU από εφαρμογές που απαιτούν πολλούς πόρους.

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