1. Απενεργοποιήστε τις μονάδες Apache
2. Ρυθμίστε το mpm_prefork
3. Μειώστε τα κούτσουρα σας
4. Εξετάστε το ενδεχόμενο να αντικαταστήσετε το mod_php
5. Εξετάστε το ενδεχόμενο να αντικαταστήσετε το mpm_prefork
Το Apache είναι πολύ εύκολο να εγκατασταθεί και να προετοιμαστεί, αλλά συνοδεύεται από πολλές προεγκατεστημένες μονάδες και ως εκ τούτου μπορεί να έχετε προβλήματα απόδοσης όταν εκτελείτε σε χαμηλή μνήμη RAM VPS.
Έτσι, δεν υπάρχει πάντα ανάγκη για μεγαλύτερο διακομιστή, αλλά μπορείτε απλά να διαμορφώσετε τις ρυθμίσεις του Apache με τον σωστό τρόπο και να έχετε την καλύτερη δυνατή απόδοση. Εδώ είναι μερικά πράγματα που πρέπει να κάνετε για να το πετύχετε.
Αυτό το σεμινάριο είναι για το Ubuntu 14.04 LTS, αλλά οι αρχές είναι παρόμοιες με τις προηγούμενες εκδόσεις.
1. Απενεργοποιήστε τις μονάδες Apache
Μπορείτε να δείτε μια λίστα με όλες τις μονάδες που είναι εγκατεστημένες με την εντολή
ls /etc/apache2/mods-available/και όλες τις λειτουργικές μονάδες που είναι αυτήν τη στιγμή ενεργές με το ls /etc/apache2/mods-enabled/.
Στην αρχική εγκατάσταση του Apache υπάρχουν 15 ή περισσότερες λειτουργικές μονάδες ενεργοποιημένες από προεπιλογή. Αυτά είναι πάρα πολλά και τα περισσότερα από αυτά δεν χρειάζονται.
Πρώτα απ 'όλα, πρέπει να δημιουργήσετε μια λίστα με όλες τις τρέχουσες ενεργές μονάδες και να την αποθηκεύσετε για μελλοντική αναφορά σε περίπτωση που απενεργοποιήσετε κάτι που χρειάζεται και πρέπει να το ενεργοποιήσετε ξανά. Στη συνέχεια, απλώς απενεργοποιήστε τις λειτουργικές μονάδες μία προς μία με την εντολή (χρησιμοποιώντας το moduleName ως παράδειγμα):
sudo a2dismod moduleName
... και επανεκκινήστε τον Apache μετά από κάθε αλλαγή για να δείτε εάν παρουσιάζεται κάποιο σφάλμα.
Μερικές ενότητες που θα πρέπει να απενεργοποιήσετε αν δεν τις χρειάζεστε είναι:
- PHP
- SSL
- Ξαναγράφω
- Perl
- Πύθων
Αφού απενεργοποιήσετε μια λειτουργική μονάδα και φορτώσετε ξανά τη διαμόρφωση του Apache, μπορείτε να ελέγξετε για σφάλματα ανοίγοντας το αρχείο καταγραφής σφαλμάτων Apache με ένα πρόγραμμα επεξεργασίας κειμένου όπως το nano.
sudo nano /var/log/apache2/error.log
Εάν εμφανιστεί ένα σφάλμα, απλώς ενεργοποιήστε ξανά την αντίστοιχη μονάδα με:
sudo a2enmod moduleName
Στη συνέχεια, επανεκκινήστε ξανά τον Apache μέχρι να τακτοποιήσετε την ελάχιστη λίστα!
2. Ρυθμίστε το mpm_prefork
Με την προεπιλεγμένη διαμόρφωση Apache (η οποία δεν είναι καλά ισορροπημένη για μικρούς διακομιστές), η μνήμη μπορεί να εξαντληθεί γρήγορα και ο διακομιστής cloud σας μπορεί να υπερφορτωθεί. Αυτό θα κάνει την ιστοσελίδα να κολλάει σε κατάσταση συνεχούς φόρτωσης. Είναι πιθανό ότι ο διακομιστής θα διατηρήσει ενεργές αυτές τις νεκρές διεργασίες Apache, επιχειρώντας να εξυπηρετήσει περιεχόμενο χωρίς λόγο, μειώνοντας τον αριθμό των διαδικασιών που είναι διαθέσιμες για προβολή.
Για να επιλύσετε αυτό το ζήτημα, πρώτα πρέπει να μάθετε πόση μνήμη RAM χρειάζεται ο διακομιστής σας, εκτός από το Apache και τη μέση ποσότητα μνήμης που χρησιμοποιεί οι διεργασίες του Apache.
Ενώ εκτελείται το Apache, ανοίξτε την επάνω εντολή στον διακομιστή.
top -bn 1
Στον πίνακα αποτελεσμάτων:
- προσθέστε τους αριθμούς στη στήλη RES προς τα επάνω για κάθε διεργασία, εκτός από το apache2 και, στη συνέχεια, αφαιρέστε το από τη συνολική ποσότητα μνήμης RAM. Ας υποθέσουμε ότι λαμβάνετε 600 MB .
- λάβετε τον μέσο όρο από όλες τις διαδικασίες apache2 . Ας υποθέσουμε ότι λάβετε 20 MB .
- Στη συνέχεια, απλώς κάντε τη διαίρεση 600/20 = 30 μέγιστες διεργασίες Apache
Επόμενο βήμα, επεξεργαστείτε το αρχείο διαμόρφωσης της μονάδας mpm_prefork:
sudo nano /etc/apache2/mods-enabled/mpm_prefork.conf
Μπορεί να μοιάζει με αυτό:
<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 2
MaxSpareServers 5
MaxRequestWorkers 30
MaxConnectionsPerChild 0
</IfModule>
Που:
- StartServers: αριθμός διεργασιών διακομιστή προς έναρξη.
- MinSpareServers: ελάχιστος αριθμός διεργασιών διακομιστή που διατηρούνται ελεύθεροι.
- MaxSpareServers: μέγιστος αριθμός διεργασιών διακομιστή που διατηρούνται ελεύθεροι.
- MaxRequestWorkers: μέγιστος αριθμός διεργασιών διακομιστή που επιτρέπεται να ξεκινήσουν.
- MaxConnectionsPerChild: μέγιστος αριθμός αιτημάτων που εξυπηρετεί μια διαδικασία διακομιστή.
Στη ρύθμιση MaxRequestWorkers , πρέπει να την αλλάξετε σε ό,τι βρείτε στην παραπάνω διαίρεση.
Τώρα, εάν το VPS σας υπερφορτωθεί και φτάσει στον μέγιστο αριθμό πελατών που μπορεί να εξυπηρετήσει ταυτόχρονα, θα εξυπηρετήσει αυτούς και οι άλλοι χρήστες απλώς θα έχουν μια γρήγορη αποτυχία. Στη συνέχεια, μπορούν να φορτώσουν ξανά τη σελίδα για να προσπαθήσουν ξανά. Είναι πολύ καλύτερο να έχετε αυτές τις συνδέσεις να κλείνουν γρήγορα, αλλά να αφήνετε τον διακομιστή σε υγιή κατάσταση αντί να παραμένει ανοιχτός για πάντα.
3. Μειώστε τα κούτσουρα σας
Για να μεγιστοποιήσετε την απόδοση, μπορείτε σίγουρα να καταγράψετε λιγότερες πληροφορίες. Στην προεπιλεγμένη διαμόρφωση του Apache, η ρύθμιση LogLevel έχει ρυθμιστεί να προειδοποιεί . Μπορείτε να το αλλάξετε σε σφάλμα για να διατηρήσετε μόνο τα μηνύματα σφάλματος.
Ανοίξτε το αρχείο διαμόρφωσης Apache:
sudo nano /etc/apache2/apache2.conf
Βρείτε τη γραμμή:
LogLevel warn
... και αλλάξτε το σε:
LogLevel error
Στη συνέχεια, αποθηκεύστε το αρχείο και επανεκκινήστε τον Apache με:
sudo service apache2 restart
Το προεπιλεγμένο αρχείο που διατηρεί ο Apache τα αρχεία καταγραφής είναι /var/log/apache2/error.log .
4. Εξετάστε το ενδεχόμενο να αντικαταστήσετε το mod_php
Εάν εκτελείτε έναν ιστότοπο PHP, υπάρχει μεγάλη πιθανότητα να χρησιμοποιείτε τη λειτουργική μονάδα mod_php. Αυτή η ενότητα μπορεί να κάνει κάθε θυγατρική διαδικασία του Apache να χρησιμοποιεί πάνω από 100 MB μνήμης RAM, ακόμα κι αν τα αιτήματα αφορούν στατικούς πόρους όπως εικόνες, css και javascript.
Μια εξαιρετική εναλλακτική είναι η ενότητα php-fpm , η οποία είναι μια ξεχωριστή διαδικασία που χρησιμοποιεί το πρωτόκολλο fastcgi. Με php-fpm, η μνήμη για τις διεργασίες Apache μπορεί να πέσει στα 10 MB για στατικό περιεχόμενο και στα 60 MB για το δυναμικό.
Αν και μπορεί να είναι λίγο δύσκολο να λειτουργήσουν τα πράγματα με αυτήν την αλλαγή, αξίζει τον κόπο.
5. Εξετάστε το ενδεχόμενο να αντικαταστήσετε το mpm_prefork
Οι περισσότερες διαμορφώσεις Apache χρησιμοποιούν τη λειτουργική μονάδα mpm_prefork , η οποία είναι ασφαλής για νήματα και χρησιμοποιεί πολλαπλές θυγατρικές διεργασίες με ένα νήμα κάθε φορά και κάθε διεργασία χειρίζεται μία σύνδεση τη φορά. Εάν δεν χρειάζεστε εξωτερικές μονάδες όπως PHP ή Rails, τότε μπορείτε να το αντικαταστήσετε με το apache2-mpm-worker , το οποίο συχνά είναι πιο γρήγορο. Το Worker MPM χρησιμοποιεί πολλαπλές θυγατρικές διεργασίες με πολλά νήματα το καθένα και κάθε νήμα χειρίζεται μία σύνδεση τη φορά.
Για να ενεργοποιήσετε τη λειτουργική μονάδα, πρέπει να την εγκαταστήσετε.
sudo apt-get install apache2-mpm-worker
Αυτή η εντολή θα απεγκαταστήσει τα mpm_prefork , mos_php και άλλες μη συμβατές πρόσθετες μονάδες.