Γνωσιακή Απλές οδηγίες για να εργαστείτε με την υπηρεσία Profitserver
Κυρίως Γνωσιακή Μείωση του φόρτου του διακομιστή

Μείωση του φόρτου του διακομιστή


Σε αυτό το άρθρο, θα εμβαθύνουμε στο γιατί συμβαίνει αυξημένο φόρτο διακομιστή και θα συζητήσουμε διάφορους τρόπους βελτιστοποίησης διαδικασιών υψηλού φόρτου. Θα δοθεί ιδιαίτερη προσοχή στη βελτιστοποίηση κώδικα σε Apache/Nginx και MySQL, θα μιλήσουμε για την προσωρινή αποθήκευση ως βοηθητικό εργαλείο και επίσης θα εξετάσουμε πιθανές εξωτερικές απειλές, όπως επιθέσεις DDOS, και τρόπους αποτροπής τους.

Γιατί εμφανίζεται φόρτωση διακομιστή

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

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

Βελτιστοποίηση διακομιστή Apache/Nginx

Αυξημένο φόρτο διακομιστή λόγω ευρετηρίασης

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

/var/www/httpd-logs/sitename.access.log

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

11.22.33.44 - - [Date and Time] "GET /your-page-path HTTP/1.1" 200 1234 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

Ως πρώτη λύση για τη μείωση του φορτίου, μπορείτε να χρησιμοποιήσετε τη ρύθμιση των μετα-ετικέτες "noindex" "nofollow" σε σελίδες που δεν χρειάζεται να ευρετηριαστούν. Η δεύτερη λύση είναι η .htaccess αρχείο, όπου πρέπει να προστεθούν καταχωρήσεις που αντιστοιχούν σε συγκεκριμένες μηχανές αναζήτησης, για παράδειγμα, για απόκρυψη από το Yandex και το Google:

SetEnvIfNoCase User-Agent "^Yandex" search_bot
SetEnvIfNoCase User-Agent "^Googlebot" search_bot
Order Allow,Deny
Allow from all
Deny from env=search_bot

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

Χρήση ρυθμίσεων προσωρινής αποθήκευσης

Οι εσφαλμένες ρυθμίσεις προσωρινής αποθήκευσης στον διακομιστή μπορούν επίσης να οδηγήσουν σε υψηλό φορτίο. Για τη βελτιστοποίηση αυτής της παραμέτρου, πρέπει να γίνουν αντίστοιχες αλλαγές στα αρχεία διαμόρφωσης ή .htaccess. Στην περίπτωση του Apache, η τελευταία επιλογή είναι προτιμότερη, για το Nginx - η πρώτη.

Σε ένα Apache διακομιστή, πρέπει να ανοίξετε το .htacess αρχείο και εισάγετε τον ακόλουθο κώδικα:

<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf|doc|docx)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

Στη συνέχεια, ενεργοποιήστε το Λήγει ενότητα χρησιμοποιώντας την εντολή:

sudo a2enmod expires

Μετά από αυτό, επανεκκινήστε τον διακομιστή web:

sudo service apache2 restart

Και ενεργοποιήστε τη μονάδα προσδιορίζοντας:

ExpiresActive On

Σε ένα nginx διακομιστή, αρκεί να προσθέσετε τον ακόλουθο κώδικα στο αρχείο διαμόρφωσης:

location ~* .(jpg|jpeg|gif|png|ico|css|swf|flv|doc|docx)$ {
root /var/www/yoursite.com;
}

Και εκτελέστε επαναφόρτωση υπηρεσίας:

sudo service nginx restart

Σημειώστε ότι με αυτές τις ρυθμίσεις, το Επιτρέψτε Δεν Αποδέχομαι οδηγίες θα παρακαμφθούν.

Χρήση συμπίεσης δεδομένων

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

Να επιτρέψει Gzip on Apache, πρέπει να ενεργοποιήσετε το mod_deflate μονάδα μέτρησης:

sudo a2enmod deflate

Στη συνέχεια, επανεκκινήστε τον διακομιστή ιστού:

sudo service apache2 restart

Και τέλος, προσθέστε το ακόλουθο μπλοκ στο αρχείο διαμόρφωσης ή .htaccess:

<IfModule mod_deflate.c>
# Configure compression for specified file types
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript application/json

# If the browser matches the specified pattern, apply compression only to text/html files
BrowserMatch ^Mozilla/4 gzip-only-text/html

# If the browser matches the specified version patterns of Mozilla 4.0.6, 4.0.7, 4.0.8, disable compression
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# If the browser is MSIE (Internet Explorer), disable compression for all files except text/html
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# If the request contains the specified pattern (extensions of image files), disable compression
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip
</IfModule>

Αυτή η ρύθμιση παραμέτρων επιτρέπει τη συμπίεση για ορισμένους τύπους αρχείων και την απενεργοποιεί για εικόνες.

Στην περίπτωση των nginx, η διαμόρφωση πραγματοποιείται στο http μπλοκ του αρχείου διαμόρφωσης. Πρέπει να προστεθεί ο ακόλουθος κώδικας:

gzip on;
gzip_disable "msie6";

# Adds the Vary header, indicating that the response may change depending on the Accept-Encoding header value
gzip_vary on;

# Enables compression for any proxy servers
gzip_proxied any;

# Sets the compression level. A value of 6 provides a good balance between compression efficiency and resource use
gzip_comp_level 6;

# Sets the size of the buffer for compressed data (16 buffers of 8 kilobytes each)
gzip_buffers 16 8k;

# Specifies that data compression should be used only for HTTP version 1.1 and higher
gzip_http_version 1.1;

# Sets the file types that can be compressed
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

Παρόμοια με Apache, εδώ ορίζονται οι παράμετροι συμπίεσης για ορισμένους τύπους αρχείων. Αφού κάνετε αλλαγές σε οποιονδήποτε από τους διακομιστές ιστού, απαιτείται επαναφόρτωση της υπηρεσίας:

sudo service apache2 restart

Or

sudo service nginx restart

Επίθεση DDOS στον διακομιστή

Ο υψηλός φόρτος διακομιστή μπορεί να προκύψει ως αποτέλεσμα μιας επίθεσης DDoS. Ο εντοπισμός της παρουσίας μιας επίθεσης DDoS μπορεί να γίνει μέσω της παρακολούθησης μιας ξαφνικής αύξησης της επισκεψιμότητας, των μη φυσιολογικών αιτημάτων και της πτώσης της απόδοσης του διακομιστή. Η εξέταση των αρχείων καταγραφής για επαναλαμβανόμενα αιτήματα από μία διεύθυνση IP ή σάρωση θύρας μπορεί επίσης να υποδεικνύει μια πιθανή επίθεση DDoS. Υπάρχουν πολλά μέτρα προστασίας, αλλά θα συζητήσουμε μόνο τα βασικά.

Χρήση ενός CDN (Δίκτυο παράδοσης περιεχομένου). Ένα CDN μπορεί να χρησιμεύσει ως ενδιάμεσος μεταξύ του διακομιστή ιστού και των χρηστών σας, διανέμοντας επισκεψιμότητα και αποθήκευση περιεχομένου για να μετριάσει τον αντίκτυπο μιας επίθεσης DDoS. Τα CDN μπορούν επίσης να έχουν ενσωματωμένους μηχανισμούς προστασίας DDoS, συμπεριλαμβανομένης της διανομής φορτίου και του φιλτραρίσματος της κυκλοφορίας.

Διαμόρφωση τείχους προστασίας και συστημάτων ανίχνευσης εισβολής (IDS/IPS). Τα τείχη προστασίας μπορούν να διαμορφωθούν για να φιλτράρουν την κυκλοφορία με βάση διάφορα κριτήρια, όπως διευθύνσεις IP και θύρες. Το IDS/IPS μπορεί να ανιχνεύσει μη φυσιολογική συμπεριφορά κυκλοφορίας και να αποκλείσει ύποπτες συνδέσεις. Αυτά τα εργαλεία μπορούν να είναι αποτελεσματικά για την παρακολούθηση και τον αποκλεισμό δυνητικά κακόβουλης κυκλοφορίας.

Διαμόρφωση διακομιστών ιστού Apache και Nginx για τον μετριασμό του αντίκτυπου των επιθέσεων DDoS.

Ως λύση για το Apache, ενεργοποιούμε το mod_evasive μονάδα μέτρησης. Για να το κάνετε αυτό, αφαιρέστε το σχόλιο ή προσθέστε την ακόλουθη γραμμή στο httpd.conf or apache2.conf αρχείο ρυθμίσεων:

LoadModule evasive20_module modules/mod_evasive.so

Στο ίδιο αρχείο, πρέπει να προσθέσετε ένα μπλοκ ρυθμίσεων:

<IfModule mod_evasive20.c>
# Hash table size for storing request information
DOSHashTableSize 3097

# Number of requests to one page before activating protection
DOSPageCount 2
DOSPageInterval 1

# Number of requests to all pages before activating protection
DOSSiteCount 50
DOSSiteInterval 1

# Blocking period in seconds for IP addresses
DOSBlockingPeriod 10
</IfModule>

Ομοίως, ενεργοποιούμε το mod_ratelimit μονάδα μέτρησης:

LoadModule ratelimit_module modules/mod_ratelimit.so

Και προσθέστε τη διαμόρφωση:

<IfModule mod_ratelimit.c>
# Setting the output filter for rate limiting (Rate Limit)
SetOutputFilter RATE_LIMIT

# Beginning of the settings block for the location "/login"
<Location "/login">

# Setting the environment variable rate-limit with a value of 1
SetEnv rate-limit 1

# Ending of the settings block for the location "/login"
</Location>
</IfModule>

Η διαμόρφωση για nginx είναι παρόμοιο με το Apache. Στην nginx.conf αρχείο ρυθμίσεων, πρέπει να χρησιμοποιηθούν οι ακόλουθες οδηγίες:

http {
...
# Defining a zone for connection limits
limit_conn_zone $binary_remote_addr zone=addr:10m;

# Defining a zone for request limits
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;

server {
        ...
        # Configuring connection limits
        limit_conn addr 10;

        # Configuring request limits
        limit_req zone=req_zone burst=5;

        ...
    }
}

Αφού κάνετε αλλαγές σε καθεμία από τις υπηρεσίες, πρέπει να φορτωθούν ξανά:

sudo systemctl restart apache2

Ή:

sudo systemctl restart nginx

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

Βελτιστοποίηση ερωτημάτων MySQL

Η βελτιστοποίηση των ερωτημάτων της βάσης δεδομένων MySQL σε έναν διακομιστή ιστού μπορεί να επιτευχθεί με διάφορους τρόπους, και ένας από αυτούς είναι η σωστή ρύθμιση παραμέτρων του αρχείου διαμόρφωσης. Συνήθως, αυτό το αρχείο ονομάζεται my.cnf or my.ini και βρίσκεται στο /και τα λοιπα/ or /etc/mysql/ τηλεφωνικός κατάλογος. Πρέπει να το ανοίξετε και να κάνετε τις ακόλουθες αλλαγές:

[mysqld]
# Location of the file for recording slow queries. Be sure to replace it with your path
log-slow-queries = /var/log/mariadb/slow_queries.log

# Threshold time for considering slow queries (in seconds)
long_query_time = 5

# Enabling recording of queries that do not use indexes
log-queries-not-using-indexes = 1

# Disabling query caching
query_cache_size = 0
query_cache_type = 0
query_cache_limit = 1M

# Size of temporary tables
tmp_table_size = 16M
max_heap_table_size = 16M

# Size of the thread cache
thread_cache_size = 16

# Disabling name resolving
skip-name-resolve = 1

# Size of the InnoDB buffer pool. Set to 50-70% of available RAM
innodb_buffer_pool_size = 800M

# Size of the InnoDB log file
innodb_log_file_size = 200M

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

  1. Χρησιμοποιήστε το ΕΞΗΓΗΣΗ εντολή πριν από ένα ερώτημα SQL για την ανάλυση της εκτέλεσής του. Αυτό σας επιτρέπει να λάβετε ένα σχέδιο εκτέλεσης για το ερώτημα και να προσδιορίσετε ποια ευρετήρια χρησιμοποιούνται, ποιοι πίνακες σαρώνονται κ.λπ.
  2. Τα ευρετήρια επιταχύνουν την αναζήτηση δεδομένων, επομένως τα σωστά σχεδιασμένα ευρετήρια μπορούν να βελτιώσουν σημαντικά την απόδοση των ερωτημάτων. Δώστε προσοχή στις στήλες που χρησιμοποιούνται συχνά ΠΟΥ or Ενώνω συνθήκες.
  3. Αποφύγετε τη χρήση SELECT *. Καθορίστε μόνο εκείνες τις στήλες που είναι πραγματικά απαραίτητες για το ερώτημά σας, αντί να επιλέξετε όλες τις στήλες σε έναν πίνακα.
  4. Αποφύγετε τη χρήση λειτουργιών σε ΠΟΥ συνθήκες. Χρήση λειτουργιών (όπως ΚΑΤΩ, ΑΝΏΤΕΡΟΣ, ΑΡΙΣΤΕΡΑ, ΔΙΚΑΙΩΜΑ) στο ΠΟΥ Οι συνθήκες μπορούν να κάνουν τα ευρετήρια άχρηστα. Προσπαθήστε να αποφύγετε την άμεση χρήση τους υπό συνθήκες.
  5. Χρήση ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ όπου είναι δυνατόν, καθώς είναι συνήθως πιο αποτελεσματικό. Επίσης, βεβαιωθείτε ότι οι αντίστοιχες στήλες για ένωση έχουν ευρετήρια.
  6. Χρήση LIMIT για να περιορίσετε τον αριθμό των επιστρεφόμενων σειρών εάν χρειάζεται να λάβετε μόνο έναν συγκεκριμένο αριθμό αποτελεσμάτων.
  7. Εξετάστε το ενδεχόμενο αποθήκευσης αποτελεσμάτων ερωτημάτων προσωρινής αποθήκευσης, ειδικά εάν αλλάζουν σπάνια, για να μειώσετε το φόρτο του διακομιστή.

Ο διακομιστής αλληλογραφίας δημιουργεί υψηλό φορτίο στο διακομιστή

Σε αυτήν την ενότητα, θα διερευνήσουμε πώς να προσδιορίσουμε ότι ο διακομιστής αλληλογραφίας αντιμετωπίζει υψηλό φορτίο και ποια βήματα μπορούν να ληφθούν για τη βελτιστοποίηση της λειτουργίας του, συμπεριλαμβανομένου του ελέγχου της ουράς μηνυμάτων και της διαμόρφωσης παραμέτρων διακομιστή. Ξεκινήστε με τον έλεγχο της ουράς μηνυμάτων. Ο mailq Το βοηθητικό πρόγραμμα μπορεί να βοηθήσει σε αυτό, για να το ενεργοποιήσετε, εισαγάγετε την αντίστοιχη εντολή στο τερματικό:

mailq

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

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

  1. Βεβαιωθείτε ότι οι εγγραφές DNS του τομέα σας έχουν διαμορφωθεί σωστά, μεταξύ άλλων παράγοντας προστασίας, επέκταση dkimκαι dMarc αρχεία για τη βελτίωση της παράδοσης αλληλογραφίας και την προστασία από ανεπιθύμητα μηνύματα. Μπορείτε να βρείτε τη σωστή διαμόρφωση των παραμέτρων στο άρθρο σχετικά διαγνωστικά διακομιστή αλληλογραφίας.
  2. Ελέγξτε τις ρυθμίσεις δικτύου, συμπεριλαμβανομένων των κανόνων διαμόρφωσης τείχους προστασίας και δρομολόγησης, για να αποφύγετε τους αποκλεισμούς και να επιταχύνετε την παράδοση αλληλογραφίας.
  3. Διαμορφώστε τις παραμέτρους της ουράς μηνυμάτων σύμφωνα με το φορτίο του διακομιστή. Αυτό μπορεί να περιλαμβάνει τη ρύθμιση του μέγιστου μεγέθους ουράς και των χρονικών ορίων.
  4. Εξετάστε τις λύσεις που συζητήσαμε σε αυτό το άρθρο νωρίτερα. Βελτιστοποιήστε περιοδικά τη βάση δεδομένων του διακομιστή αλληλογραφίας για να βελτιώσετε την απόδοση, χρησιμοποιήστε μηχανισμούς προσωρινής αποθήκευσης για να επιταχύνετε την αναζήτηση και την επεξεργασία δεδομένων, όπως ερωτήματα DNS.
  5. Εάν ο διακομιστής αλληλογραφίας εξακολουθεί να αντιμετωπίζει τακτικά υψηλό φορτίο, εξετάστε τις επιλογές κλιμάκωσης, όπως η χρήση ενός συμπλέγματος διακομιστών αλληλογραφίας ή λύσεων cloud.

Συμπέρασμα

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

❮ Προηγούμενο άρθρο Διαγνωστικά φόρτωσης διακομιστή
Επόμενο άρθρο ❯ Certbot: Εγκατάσταση Let's Encrypt Certificate

Ρωτήστε μας για το VPS

Είμαστε πάντα έτοιμοι να απαντήσουμε στις ερωτήσεις σας οποιαδήποτε ώρα της ημέρας ή της νύχτας.