Στα πακέτα shared και semi dedicated στην υποδομή μας η χρήση των πόρων ελέγχεται μέσω του LVE Manager του Cloudlinux έτσι ώστε ο κάθε χρήστης να μπορεί να χρησιμοποιήσει τους πόρους που αντιστοιχούν αποκλειστικά στο πακέτο του και όχι περισσότερους.
Σε κάθε πακέτο το Plesk ορίζεται ένας system user , στον οποίο και δίνονται συγκεκριμένες τιμές πόρων (CPU, RAM, Disk I/O, Processes). Όταν οι τιμές αυτές εξαντληθούν από τα site σας, εμφανίζονται καθυστερήσεις αλλά και το μήνυμα σφάλματος όπως 502, 503 και 508 ανάλογα με τον πόρο που εξαντλείται.
Τι είναι ο LVE και το Cloudlinux;
Το Cloudlinux είναι ένα λειτουργικό σύστημα το οποίο βασίζεται στα Linux και μας επιτρέπει να διαχειριζόμαστε καλύτερα τους πόρους του συστήματος, καθώς μέσω του LVE περιορίζει τους πόρους που μπορεί να χρησιμοποιήσει ο κάθε χρήστης στο πακέτο του και έτσι μας επιτρέπει να παρέχουμε αξιόπιστες υπηρεσίες και να μην μπορεί να επηρεάσει ένας χρήστης το σύστημα σε περιβάλλον shared hosting. Επιπλέον, απομονώνει τον κάθε χρήστη στο περιβάλλον του και έτσι αυξάνει την ασφάλεια του server.
Ο LVE manager (Lightweight Virtual Environment) είναι μία τεχνολογία πυρήνα η οποία έχει αναπτυχθεί από το Cloudlinux και έχει τις ρίζες της στην εικονικοποίηση βασισμένη σε κοντέινερς (container-based virtualization). Είναι το κομμάτι του Cloudlinux που παρακολουθεί και περιορίζει τους πόρους του κάθε χρήστη με βάση τα όρια του πακέτου του και δεν επιτρέπει την κατάχρηση από κάποιον χρήστη, αποτρέποντας παράλληλα την υπερφόρτωση των πόρων του server.
Ποιοι πόροι περιορίζονται, τι σημαίνει ο καθένας και πως ένας ενδεχόμενος περιορισμός επηρεάζει τις ιστοσελίδες μου ;
Οι πόροι που περιορίζονται ανά πακέτο στην υποδομή μας είναι οι παρακάτω και τα όρια διαφέρουν ανάλογα με το πακέτο.
CPU (Επεξεργαστική ισχύς / SPEED)
Τα όρια της CPU καθορίζουν τη μέγιστη ταχύτητα που μπορεί μπορεί να αξιοποιηθεί από ένα πακέτο φιλοξενίας. Στην ουσία τους πυρήνες από την CPU που μπορεί να χρησιμοποιήσει ένα πακέτο φιλοξενίας πριν περιοριστεί. Όταν ένας χρήστης αγγίζει το όριο CPU, τα processes εντός αυτού του ορίου επιβραδύνονται και παρατηρούνται καθυστερήσεις στις ιστοσελίδες του πακέτου.
Physical Memory Usage (Μνήμη RAM / PMEM)
Η μέγιστη φυσική μνήμη / RAM που μπορεί να κάνει χρήση το πακέτο. Σε περίπτωση που η χρήση που κάνουν τα processes του πακέτου φτάνουν το συγκεκριμένο όριο, οι ιστοσελίδες μπορεί να παρουσιάσουν errors “503 Service Unavailable” ή “Internal Server Error”.
Input/Output Usage (I/O)
Τα όρια I/O περιορίζουν τη διακίνηση δεδομένων στο δίσκο για το πακέτο και μετρούνται σε MB / s. Όταν η συνολική χρήση του πακέτου αγγίζει το όριο Ι/Ο, τα processes εντός αυτού του ορίου επιβραδύνονται και παρατηρούνται καθυστερήσεις στις ιστοσελίδες του πακέτου και σε κάποιες περιπτώσεις errors “502 Bad Gateway Error”.
IO operations (IOPS)
To σύνολο των εργασιών που μπορεί να τρέχει ένα πακέτο ταυτόχρονα στον δίσκο. Σε περίπτωση που η χρήση που κάνουν τα processes του πακέτου φτάνουν το συγκεκριμένο όριο, οι ιστοσελίδες μπορεί να παρουσιάσουν καθυστερήσεις.
Entry Processes (EP)
Οι διεργασίες εισόδου (entry processes) αντιπροσωπεύουν τον μέγιστο αριθμό ταυτόχρονων συνδέσεων των δυναμικών scripts στον Apache και στον Nginx (για παράδειγμα PHP & CGI scripts), καθώς και εργασίες SSH και cron που εκτελούνται ταυτόχρονα. Σε περίπτωση που η συνολική χρήση του πακέτου αγγίζει αυτό το όριο οι ιστοσελίδες ενδέχεται να παρουσιάσουν errors “503 Service Unavailable” ή “508 Resource Limit Is Reached”.
Processes (NPROC)
Tο όριο είναι παρόμοιο με τα παραπάνω, αλλά περιλαμβάνει όλες τις διαδικασίες που δημιουργούνται από το πακέτο και όχι μόνο τις συγκεκριμένες εργασίες PHP, SSH ή cron. Σε περίπτωση που η συνολική χρήση του πακέτου αγγίζει αυτό το όριο οι ιστοσελίδες ενδέχεται να παρουσιάσουν καθυστερήσεις και errors “502 Bad Gateway Error” ή “503 Service Unavailable”.
Πως μπορώ να ελέγξω τη χρήση του πακέτου μου και αν περιορίζονται κάποια από τα παραπάνω όρια;
Μέσα από το Plesk και στην επιλογή Resource Usage μπορείτε να ελέγξετε τη χρήση του πακέτου σας για τις χρονικές περιόδους που επιθυμείτε.
Πιο αναλυτικά, αφού συνδεθείτε στο Plesk με τα στοιχεία πρόσβασης σας.
Αφού συνδεθείτε στο Plesk σας, στο μενού που εμφανίζεται δεξιά στην οθόνη, επιλέξτε Resource Usage.
Εδώ θα σας εμφανιστεί μια αναφορά σχετικά με την κατάσταση των πόρων του πακέτου σας τις τελευταίες 24 ώρες. Επιλέξτε Details, για να σας εμφανιστούν τα γραφήματα χρήσης πόρων για τις χρονικές στιγμές που επιθυμείτε.
Στα παρακάτω γραφήματα μπορείτε να δείτε αναλυτικά τη χρήση των πόρων για τη χρονική περίοδο που έχετε επιλέξει και στο τελευταίο γράφημα Faults μπορείτε να δείτε αν έχουν προκύψει σφάλματα για κάθε πόρο σε περίπτωση που η συνολική χρήση του πακέτου έχει αγγίξει κάποιο όριο.
Επιπλέον στον πίνακα Usage μπορείτε να δείτε ανάλυση των παραπάνω γραφημάτων ανά ώρα.
Τι μπορώ να κάνω σε περίπτωση που η συμπεριφορά των ιστοσελίδων μου επηρεάζεται από περιορισμό των πόρων του πακέτου μου;
Σε περίπτωση που προκύπτουν πολλά σφάλματα από τον περιορισμό των πόρων του πακέτου οι παρακάτω αιτίες είναι οι πιο συνήθεις.
Υπάρχουν προβληματικά requests σε μία ή περισσότερες ιστοσελίδες του πακέτου που κάνουν κατάχρηση των πόρων και θα πρέπει να ελεγχθούν και να διορθωθούν σε επίπεδο εφαρμογής.
Υπάρχουν πολλά requests από επιθετικούς crawlers και θα πρέπει να περιοριστούν σε επίπεδο .htaccess και robots.txt
Οι συνολικές απαιτήσεις των ιστοσελίδων σε πόρους είναι μεγαλύτερες από αυτές του πακέτου και θα πρέπει να γίνει αναβάθμιση σε κάποιο με περισσότερους πόρους.
Τα βήματα τα οποία θα μπορούσατε να ακολουθήσετε για να αναγνωρίσετε την κάθε περίπτωση και να προχωρήσετε στις σχετικές ενέργειες είναι τα παρακάτω.
1. Αναγνώριση των ιστοσελίδων που κάνουν την μεγαλύτερη χρήση των πόρων ή δημιουργούν το πρόβλημα σε περίπτωση που υπάρχει παραπάνω από ένα domain στο πακέτο
Οι ιστοσελίδες που συνήθως κάνουν μεγαλύτερη χρήση των πόρων είναι και αυτές που έχουν τον μεγαλύτερο όγκο των requests. Για να εντοπίσετε ποιες ιστοσελίδες έχουν τα περισσότερα requests θα μπορούσατε να υπολογίσετε των όγκο των logs που παράγουν. Πιο συγκεκριμένα στον φάκελο logs μέσα από το Plesk μπορείτε να υπολογίσετε των όγκο των logs του κύριου domain και τον όγκο των φακέλων των πρόσθετων domains. Οι ιστοσελίδες που έχουν τον μεγαλύτερο όγκο logs έχουν τα περισσότερα requests ή καταγράφουν τα περισσότερα errors.
Σε αυτό το σημείο υπάρχει η περίπτωση η ιστοσελίδα που κάνει τη μεγαλύτερη χρήση των πόρων να μην είναι αυτή με τα περισσότερα requests αλλά κάποια που έχει προβληματικά requests και παρόλο που είναι λιγότερα να κάνουν κατάχρηση των πόρων.
Σε αυτή την περίπτωση, εντοπίζετε την ιστοσελίδα αυτή από την χρήση, δηλαδή συνήθως δουλεύοντας στο διαχειριστικό της ιστοσελίδας η κατά την περιήγησή της σε αυτή έχετε σφάλματα και καθυστερήσεις τα οποία μπορείτε να δείτε και στα logs.
2. Ελεγχος στα logs για τα requests που κάνουν χρήση των πόρων την ώρα που υπάρχουν τα faults.
Από τα γραφήματα του Resource Usage μπορείτε να δείτε τις χρονικές στιγμές που προκύπτουν τα σφάλματα, κάνοντας mouseover τη χρονική στιγμή που καταγράφεται το peak.
Έπειτα από τα logs των domains που εντοπίσατε στο προηγούμενο βήμα, μπορείτε να δείτε τα requests που τρέχανε εκείνη την ώρα και τις IP από της οποίες γίνονται αυτά τα requests
Στα Logs, στη στήλη Date εντοπίζουμε τη χρονική στιγμή που προέκυψε το αντίστοιχο peak στο γράφημα (βλ. προηγούμενο βήμα) και έπειτα ελέγχουμε πληροφορίες όπως την IP, το request που έτρεξε, τον τύπο του agent που εκτέλεσε το request καθώς και τον τύπο της πηγής όπου καταγράφηκε το συγκεκριμένο μήνυμα (Apache/Nginx access/error).
3. Ενδεχόμενες αιτίες και ενέργειες
a. Επιθετικά crawlers
Αρχικά θα πρέπει να αποκλείσετε το ενδεχόμενο αυτά τα requests να γίνονται από κάποιον crawler που ενεργεί επιθετικά.
Εντοπίζοντας τις IP από τις οποίες γίνονται και έστω ότι οι ίδιες IPs ή τα ίδια subnet δημιουργούν μεγάλο όγκο requests μπορείτε να δείτε από εδώ αν πρόκειται για κάποιον crawler ή όχι.
Αν όντως κάποιος crawler δημιουργεί πολλά requests μπορείτε είτε να τροποποιήσετε το .htaccess αρχείο σας για να μπλοκάρετε τις IPs ή το αρχείο robots.txt για να τους περιορίσετε.
b. Μεγάλη χρήση πόρων από crons
Σε περίπτωση που η IP από την οποία γίνονται τα requests είναι αυτή του server και τα requests είναι αυτά των crons που έχετε δημιουργήσει, θα μπορούσατε να εξετάσετε αν μπορούν να τρέχουν ανά μεγαλύτερα χρονικά διαστήματα ή για κάποιο λόγο το request δεν εκτελείται ή αργεί να εκτελεστεί λόγω προγραμματιστικού σφάλματος.
c. Προβληματικά requests στην εκτέλεση της ιστοσελίδας
Σε περίπτωση που ο αριθμός των requests που εντοπίσατε δεν δικαιολογούν τη χρήση των πόρων που βλέπετε τις χρονικές στιγμές που δημιουργούνται τα σφάλματα, ίσως κάποιο request είναι προβληματικό και κάνει κατάχρηση πόρων ενώ παράλληλα αργεί να εκτελεστεί.
Σε αυτή την περίπτωση θα μπορούσατε να ενεργοποιήσετε το debug της εφαρμογής σας, έτσι ώστε να δείτε περισσότερες λεπτομέρειες για αυτά τα requests και να προχωρήσετε σε σχετικές ενέργειες.
Αν κάνετε χρήση κάποιου CMS όπως WordPress ή Joomla, αρχικά βεβαιωθείτε πως οι εκδόσεις των πρόσθετων και των theme / templates είναι συμβατές μεταξύ τους και με την έκδοση του ίδιου του CMS, έτσι ώστε να μην δημιουργούνται ασυμβατότητες που οδηγούν σε προβληματικά requests. Από την πλευρά μας προτείνουμε όλα να είναι πάντα αναβαθμισμένα στην τελευταία τους έκδοση και να αφαιρούνται πρόσθετα που δεν αναβαθμίζονται πλέον από τους developers τους.
Επιπλέον, βεβαιωθείτε πως η έκδοση PHP που κάνετε χρήση για το domain είναι συμβατή με τα scripts σας και δεν παράγονται errors και καθυστερήσεις.
Σε περίπτωση που από τα παραπάνω βήματα δεν απομονώσετε κάποιο πρόβλημα το οποίο μπορεί προκαλεί κατάχρηση των πόρων, σημαίνει πως οι απαιτήσεις των ιστοσελίδων ξεπερνουν τους πόρους του πακέτου και θα πρέπει να εξετάσετε το ενδεχόμενο κάποιας αναβάθμισης.