Knowledgebase Ienfâldige ynstruksjes om te wurkjen mei de Profitserver-tsjinst
Foarnaamste Knowledgebase Ferminderjen fan tsjinner load

Ferminderjen fan tsjinner load


Yn dit artikel sille wy ferdjipje yn wêrom't ferhege serverlading optreedt en ferskate manieren beprate om prosessen mei hege lading te optimalisearjen. Spesjaal omtinken sil jûn wurde oan koade-optimisaasje yn Apache / Nginx en MySQL, wy sille prate oer caching as in helpmiddel, en ek beskôgje mooglike eksterne bedrigingen, lykas DDOS-oanfallen, en manieren om se te foarkommen.

Wêrom Server Load Optreedt

Foardat jo trochgean mei tsjinneroptimalisaasje, is it nedich om in yngeande analyse te fieren fan 'e hjoeddeistige lading op boarnen. Dit omfettet it mjitten fan CPU-lading, RAM-gebrûk, netwurkaktiviteit en oare wichtige parameters. De dynamyk en pyklasten begripe kinne knelpunten identifisearje en de allocaasje fan boarnen optimalisearje, sadat de stabiliteit en prestaasjes fan 'e serverynfrastruktuer ferheegje.

Foar inisjele troubleshooting fan hege tsjinner load, wy riede it útfieren fan in algemiene tsjinner diagnostyk. As dit is net genôch, in mear detaillearre analyze fan boarnen is nedich. As helpmiddel, ferkenne de logs fan de Linux server kin nuttich wêze, om't dit is wêr't de boarne fan it probleem yn 'e measte gefallen is fûn.

Apache / Nginx-tsjinner optimalisearje

Ferhege tsjinnerbelêsting fanwege yndeksearring

Ferhege lading troch yndeksearring op 'e tsjinner kin foarkomme, bygelyks as sykmasines in grut oantal siden op jo side scannen. Dit kin liede ta ferhege gebrûk fan serverboarnen en, as gefolch, de prestaasjes fan 'e side fertrage. Identifisearje de oarsaak is relatyf ienfâldich; jo moatte it bestân iepenje op:

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

As yndeksearre troch sykmasines, sil de brûker yngongen sjen fan de folgjende aard:

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)"

As earste oplossing om de lading te ferminderjen, kinne jo de ynstelling fan meta-tags brûke "noindex" en "nofollow" op siden dy't net hoege te yndeksearre. De twadde oplossing is de .htaccess bestân, wêryn yngongen oerienkomme mei spesifike sykmasines moatte wurde tafoege, bygelyks om te ferbergjen fan Yandex en Google:

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

Likegoed moatte bewurkings makke wurde foar oare sykmasines. It moat opmurken wurde dat de mooglikheden fan .htaccess net beheind binne ta gewoan blokkearjen fan yndeksearring. Wy riede oan om mear fertroud te wurden mei syn haadfunksjes yn 'e lidwurd.

Caching-ynstellingen brûke

Ferkearde caching-ynstellingen op 'e tsjinner kinne ek liede ta hege lading. Om dizze parameter te optimalisearjen, moatte oerienkommende feroarings makke wurde yn 'e konfiguraasjetriemmen of .htaccess. Yn it gefal fan Apache is de lêste opsje de foarkar, foar Nginx - de eardere.

Op an Apache tsjinner, moatte jo iepenje de .htacess bestân en ynfoegje de folgjende koade:

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

Dan, ynskeakelje de Ferrint module mei it kommando:

sudo a2enmod expires

Wernei de webserver opnij starte:

sudo service apache2 restart

En aktivearje de module troch op te jaan:

ExpiresActive On

op in Nginx tsjinner, is it genôch om de folgjende koade ta te foegjen oan it konfiguraasjetriem:

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

En fier in tsjinst opnij laden:

sudo service nginx restart

Tink derom dat mei dizze ynstellings, de Tastean en Ûntkenne rjochtlinen sille wurde omgien.

Gebrûk fan gegevenskompresje

Ynskeakelje gegevens kompresje mei help Gzip op Apache- en Nginx-webservers helpt de hoemannichte gegevens te ferleegjen tusken de tsjinner en de kliïnt, wat de prestaasjes ferbettert en de ladentiid fan websiden fermindert.

Mooglik meitsje Gzip on Apache, Jo moatte aktivearje de mod_deflate module:

sudo a2enmod deflate

Start dan de webserver opnij:

sudo service apache2 restart

En as lêste, foegje it folgjende blok ta oan it konfiguraasjetriem of .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>

Dizze konfiguraasje makket kompresje foar bepaalde soarten triemmen mooglik en skeakelet it út foar ôfbyldings.

Yn it gefal fan Nginx, konfiguraasje komt foar yn de http blok fan it konfiguraasjetriem. De folgjende koade moat wurde tafoege:

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;

Gelyk oan Apache, hjir binne de kompresjeparameters foar bepaalde soarten triemmen ynsteld. Nei it meitsjen fan wizigingen oan ien fan 'e webservers, is in tsjinst opnij laden:

sudo service apache2 restart

Or

sudo service nginx restart

DDOS oanfal op de tsjinner

Hege serverbelêsting kin foarkomme as gefolch fan in DDoS-oanfal. It identifisearjen fan de oanwêzigens fan in DDoS-oanfal kin dien wurde troch it kontrolearjen fan in hommelse ferheging fan ferkear, abnormale oanfragen, en drippen fan serverprestaasjes. It besjen fan logs foar werhelle oanfragen fan ien IP-adres of poarte-scanning kin ek in mooglike DDoS-oanfal oanjaan. D'r binne in protte beskermingsmaatregels, mar wy sille allinich de basis besprekke.

It brûken fan in CDN (Content Delivery Network). In CDN kin tsjinje as in tuskenpersoan tusken jo webserver en brûkers, distribúsje fan ferkear en caching ynhâld om de ynfloed fan in DDoS-oanfal te ferminderjen. CDN's kinne ek ynboude DDoS-beskermingsmeganismen hawwe, ynklusyf loadferdieling en ferkearsfiltering.

Konfiguraasje fan firewalls en systemen foar ynbraakdeteksje (IDS/IPS). Firewalls kinne wurde ynsteld om ferkear te filterjen op basis fan ferskate kritearia, lykas IP-adressen en havens. IDS / IPS kin ûntdekke abnormaal ferkear gedrach en blokkearje fertochte ferbinings. Dizze ark kinne effektyf wêze by it folgjen en blokkearjen fan potensjeel kwea-aardich ferkear.

It konfigurearjen fan Apache- en Nginx-webservers om de ynfloed fan DDoS-oanfallen te ferminderjen.

As in oplossing foar Apache, wy ynskeakelje de mod_evasive module. Om dit te dwaan, uncomment of heakje de folgjende rigel yn 'e httpd.conf or apache2.conf konfiguraasjetriem:

LoadModule evasive20_module modules/mod_evasive.so

Yn itselde bestân moatte jo in ynstellingsblok taheakje:

<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>

Lykwols, wy aktivearje de mod_ratelimit module:

LoadModule ratelimit_module modules/mod_ratelimit.so

En foegje de konfiguraasje ta:

<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>

De konfiguraasje foar Nginx is fergelykber mei Apache. Yn de nginx.conf konfiguraasjetriem, moatte de folgjende rjochtlinen brûkt wurde:

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;

        ...
    }
}

Nei it meitsjen fan wizigingen oan elk fan 'e tsjinsten, moatte se opnij laden wurde:

sudo systemctl restart apache2

Of:

sudo systemctl restart nginx

Dizze foarbylden jouwe allinich in basiskonfiguraasje, dy't fierder oanpast wurde kin ôfhinklik fan spesifike easken en de aard fan oanfallen.

Optimalisearje MySQL Queries

It optimalisearjen fan MySQL-databasefragen op in webserver kin op ferskate manieren berikt wurde, en ien fan har is de juste konfiguraasje fan it konfiguraasjetriem. Typysk wurdt dizze triem neamd myn.cnf or myn.ini en leit yn 'e / etc / or /etc/mysql/ directory. Jo moatte it iepenje en de folgjende wizigingen meitsje:

[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

Litte wy ek oanfoljende oanbefellings beskôgje dy't ynteraksje mei de serverdatabase kinne fasilitearje:

  1. Brûk de FERKLAAN kommando foar in SQL-query om de útfiering te analysearjen. Hjirmei kinne jo in útfieringsplan krije foar de query en bepale hokker yndeksen wurde brûkt, hokker tabellen wurde skansearre, ensfh.
  2. Yndeksen fersnelle gegevenssykjen, sadat goed ûntworpen yndeksen de queryprestaasjes signifikant kinne ferbetterje. Soarch omtinken foar kolommen dy't faak brûkt wurde yn WÊR or JOIN betingsten.
  3. Foarkom gebrûk ÚTKIEZE *. Spesifisearje allinich de kolommen dy't wirklik nedich binne foar jo query, ynstee fan alle kolommen yn in tabel te selektearjen.
  4. Foarkom it brûken fan funksjes yn WÊR betingsten. It brûken fan funksjes (lykas LEGER, HEGER, LINKS, RJOCHTS) yn WÊR betingsten kinne yndeksen nutteloos meitsje. Besykje har direkte gebrûk yn betingsten te foarkommen.
  5. Brûke BINNE JOIN wêr mooglik, sa't it meastal effisjinter is. Soargje der ek foar dat de oerienkommende kolommen foar oansluting yndeksen hawwe.
  6. Brûke LIMIT om it oantal weromjûne rigen te beheinen as jo mar in bepaald oantal resultaten krije moatte.
  7. Beskôgje it caching fan query-resultaten, benammen as se komselden feroarje, om de tsjinnerbelêsting te ferminderjen.

De e-posttsjinner makket hege lading op 'e tsjinner

Yn dizze seksje sille wy ûndersiikje hoe't jo kinne bepale dat de e-posttsjinner in hege lading ûnderfynt en hokker stappen kinne wurde nommen om syn wurking te optimalisearjen, ynklusyf it kontrolearjen fan de berjochtwachtrige en it konfigurearjen fan serverparameters. Begjin mei it kontrolearjen fan de berjochtwachtrige. De mailq Utility kin hjirmei helpe, om it te aktivearjen, fier it oerienkommende kommando yn it terminal yn:

mailq

Dit sil in list mei berjochten yn 'e wachtrige werjaan, as der binne. Elk berjocht sil werjûn wurde mei syn unike identifier en ynformaasje oer de ferstjoerstatus. In ferlykber resultaat kin wurde krigen troch de e-postclientlogs te besjen.

Yn 'e measte gefallen komt hege lading foar yn gefal fan tsjinner kompromis as it begjint spam te ferstjoeren. As lykwols, nei it kontrolearjen, de behearder der wis fan is dat de tsjinner net fan bûten is oanfallen en brûkers spam net negearje, is it tiid om troch te gean nei it optimalisearjen fan de e-posttsjinner. Hjir binne de stappen dy't sille helpe:

  1. Soargje derfoar dat de DNS-records fan jo domein goed binne ynsteld, ynklusyf SPF, DKIM, en DMARC records om postferstjoering te ferbetterjen en te beskermjen tsjin spam. De juste konfiguraasje fan parameters is te finen yn it artikel oer mail tsjinner diagnostyk.
  2. Kontrolearje netwurkynstellingen, ynklusyf firewall-konfiguraasje en routingregels, om blokken te foarkommen en e-postlevering te fersnellen.
  3. Konfigurearje berjochtwachtrige parameters neffens tsjinner load. Dit kin omfetsje it ynstellen fan de maksimale wachtrigegrutte en timeouts.
  4. Beskôgje de oplossingen dy't wy earder yn dit artikel besprutsen hawwe. Optimalisearje de e-postserverdatabase periodyk om prestaasjes te ferbetterjen, brûk cachingmeganismen om gegevenssykjen en ferwurking te fersnellen, lykas DNS-fragen.
  5. As de e-posttsjinner noch geregeld in hege lading tsjinkomt, beskôgje dan skaalopsjes, lykas it brûken fan in kluster fan e-posttsjinners of wolkoplossingen.

Konklúzje

Ferheegde serverlading hat direkt ynfloed op it laden fan webside, en hat úteinlik ynfloed op brûkersûnderfining en reputaasje yn sykmasines. Sa spilet it effektyf behear fan dizze lading in wichtige rol by it garandearjen fan trochgeande funksjonaliteit fan 'e boarne en it fergrutsjen fan de tagonklikens foar besikers.

❮ Foarich artikel Server Load Diagnostics
Folgjend artikel ❯ Certbot: Ynstallearje Let's Encrypt Certificate

Freegje ús oer VPS

Wy binne altyd ree om jo fragen op elk momint fan 'e dei of nacht te beantwurdzjen.