እውቀት መሰረት ከትርፍ አገልጋይ አገልግሎት ጋር ለመስራት ቀላል መመሪያዎች
ዋና እውቀት መሰረት የአገልጋይ ጭነት መቀነስ

የአገልጋይ ጭነት መቀነስ


በዚህ ጽሑፍ ውስጥ የአገልጋይ ጭነት መጨመር ለምን እንደሚከሰት እንመረምራለን እና ከፍተኛ ጭነት ሂደቶችን ለማመቻቸት የተለያዩ መንገዶችን እንነጋገራለን ። በ Apache/Nginx እና MySQL ውስጥ ለኮድ ማመቻቸት ልዩ ትኩረት ይሰጣል፣ ስለመሸጎጥ እንደ ረዳት መሳሪያ እንነጋገራለን፣ እና እንደ DDOS ጥቃቶች ያሉ ውጫዊ ስጋቶችን እና እነሱን ለመከላከል መንገዶችን እናስባለን።

የአገልጋይ ጭነት ለምን ይከሰታል

ወደ የአገልጋይ ማመቻቸት ከመቀጠልዎ በፊት በንብረቶች ላይ ያለውን ወቅታዊ ጭነት ጥልቅ ትንተና ማካሄድ አስፈላጊ ነው. ይህ የሲፒዩ ጭነትን፣ RAM አጠቃቀምን፣ የአውታረ መረብ እንቅስቃሴን እና ሌሎች ቁልፍ መለኪያዎችን መለካትን ይጨምራል። ተለዋዋጭ ሁኔታዎችን እና ከፍተኛ ጭነቶችን መረዳቱ ማነቆዎችን ለመለየት እና የሃብት ምደባን ለማመቻቸት ያስችላል፣ በዚህም የአገልጋዩ መሠረተ ልማት መረጋጋት እና አፈጻጸም ይጨምራል።

ለከፍተኛ የአገልጋይ ጭነት የመጀመሪያ መላ ፍለጋ፣ ሀ እንዲያደርጉ እንመክራለን አጠቃላይ የአገልጋይ ምርመራዎች. ይህ በቂ ካልሆነ, የበለጠ ዝርዝር የንብረቶች ትንተና አስፈላጊ ነው. እንደ ረዳት መሳሪያ, ማሰስ የሊኑክስ ምዝግብ ማስታወሻዎች በአብዛኛዎቹ ሁኔታዎች የችግሩ ምንጭ የሚገኝበት ቦታ ስለሆነ አገልጋይ ጠቃሚ ሊሆን ይችላል።

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

ከዚያ በኋላ የድር አገልጋዩን እንደገና ያስጀምሩ-

sudo service apache2 restart

እና ሞጁሉን በመግለጽ ያግብሩ፡-

ExpiresActive On

አንድ ላይ እም አገልጋይ, የሚከተለውን ኮድ ወደ ውቅረት ፋይል ማከል በቂ ነው:

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>

ይህ ውቅር ለተወሰኑ የፋይል አይነቶች መጭመቅ ያስችላል እና ለምስሎች ያሰናክለዋል።

ሁኔታ ውስጥ እም, ውቅር በ ውስጥ ይከሰታል 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 ጥቃት መኖሩን መለየት የትራፊክ ድንገተኛ መጨመርን፣ ያልተለመዱ ጥያቄዎችን እና የአገልጋይ አፈፃፀም መቀነስን በመከታተል ሊከናወን ይችላል። ከአንድ የአይፒ አድራሻ ወይም የወደብ ቅኝት ለተደጋገሙ ጥያቄዎች የምዝግብ ማስታወሻዎችን መከለስ የ DDoS ጥቃትን ሊያመለክት ይችላል። ብዙ የመከላከያ እርምጃዎች አሉ, ግን ስለ መሰረታዊ ነገሮች ብቻ እንነጋገራለን.

ሲዲኤን መጠቀም (የይዘት ማቅረቢያ አውታረ መረብ). ሲዲኤን የDDoS ጥቃትን ተፅእኖ ለመቀነስ ትራፊክ እና መሸጎጫ ይዘትን በማሰራጨት በእርስዎ የድር አገልጋይ እና በተጠቃሚዎች መካከል እንደ መካከለኛ ሆኖ ሊያገለግል ይችላል። ሲዲኤንዎች የጭነት ማከፋፈያ እና የትራፊክ ማጣሪያን ጨምሮ አብሮ የተሰሩ የዲዶኤስ ጥበቃ ዘዴዎች ሊኖራቸው ይችላል።

ፋየርዎል እና የወረራ ማወቂያ ስርዓቶችን (IDS/IPS) በማዋቀር ላይ. ፋየርዎሎች እንደ አይፒ አድራሻዎች እና ወደቦች ባሉ የተለያዩ መስፈርቶች ላይ በመመስረት ትራፊክን ለማጣራት ሊዋቀሩ ይችላሉ። IDS/IPS ያልተለመደ የትራፊክ ባህሪን መለየት እና አጠራጣሪ ግንኙነቶችን ሊያግድ ይችላል። እነዚህ መሳሪያዎች አደገኛ ሊሆኑ የሚችሉ ትራፊክን በመከታተል እና በመከልከል ውጤታማ ሊሆኑ ይችላሉ።

የDDoS ጥቃቶችን ተፅእኖ ለመቀነስ Apache እና Nginx ድር አገልጋዮችን በማዋቀር ላይ።

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

በተመሳሳይ, እኛ እናነቃለን ሞድ_ተመን ሞዱል

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>

ውቅር ለ እም ጋር ተመሳሳይ ነው 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 /ወዘተ/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 JOIN ሁኔታዎች።
  3. ከመጠቀም ይቆጠቡ ይምረጡ *. በሰንጠረዥ ውስጥ ያሉትን ሁሉንም ዓምዶች ከመምረጥ ይልቅ ለጥያቄዎ በጣም አስፈላጊ የሆኑትን አምዶች ብቻ ይግለጹ።
  4. ውስጥ ተግባራትን ከመጠቀም ተቆጠብ የት ሁኔታዎች. ተግባራትን መጠቀም (እንደ ዝቅተኛ, ከፍተኛ, ግራ, ቀኝ) ውስጥ የት ሁኔታዎች ኢንዴክሶችን ከንቱ ሊያደርጉ ይችላሉ። በሁኔታዎች ውስጥ የእነሱን ቀጥተኛ አጠቃቀም ለማስወገድ ይሞክሩ.
  5. ጥቅም INNER JOIN በተቻለ መጠን, ብዙውን ጊዜ የበለጠ ውጤታማ ነው. እንዲሁም ለመቀላቀል ተጓዳኝ አምዶች ኢንዴክሶች መኖራቸውን ያረጋግጡ።
  6. ጥቅም LIMIT የተወሰኑ ውጤቶችን ብቻ ማግኘት ከፈለጉ የተመለሱ ረድፎችን ብዛት ለመገደብ።
  7. የአገልጋይ ጭነትን ለመቀነስ የመጠይቅ ውጤቶችን መሸጎጫ ያስቡበት፣ በተለይ እምብዛም የማይለወጡ ከሆነ።

የመልእክት አገልጋዩ በአገልጋዩ ላይ ከፍተኛ ጭነት ይፈጥራል

በዚህ ክፍል የመልእክት ወረፋውን መፈተሽ እና የአገልጋይ መለኪያዎችን ማዋቀርን ጨምሮ የመልእክት አገልጋዩ ከፍተኛ ጭነት እያጋጠመው መሆኑን እና አሰራሩን ለማመቻቸት ምን አይነት እርምጃዎችን መውሰድ እንደሚቻል እንመረምራለን። የመልእክት ወረፋውን በመፈተሽ ይጀምሩ። የ mailq መገልገያ በዚህ ላይ ሊረዳ ይችላል, እሱን ለማግበር, በተርሚናል ውስጥ ያለውን ተዛማጅ ትዕዛዝ ያስገቡ:

mailq

ይህ ካለ በወረፋው ውስጥ ያሉትን የመልእክቶች ዝርዝር ያሳያል። እያንዳንዱ መልእክት በልዩ መለያው እና ስለ መላኪያ ሁኔታ መረጃ ይታያል። የደብዳቤ ደንበኛ ምዝግብ ማስታወሻዎችን በመገምገም ተመሳሳይ ውጤት ሊገኝ ይችላል.

በአብዛኛዎቹ ሁኔታዎች አይፈለጌ መልእክት መላክ ሲጀምር ከፍተኛ ጭነት በአገልጋይ ስምምነት ላይ ይከሰታል። ነገር ግን፣ አስተዳዳሪውን ካረጋገጡ በኋላ አገልጋዩ ከውጭ ጥቃት እንዳልደረሰበት እና ተጠቃሚዎች አይፈለጌ መልዕክትን ችላ ካልተባለ፣ የመልእክት አገልጋዩን ወደ ማመቻቸት ለመቀጠል ጊዜው አሁን ነው። የሚረዱዎት ደረጃዎች እነኚሁና:

  1. የጎራዎ የዲ ኤን ኤስ መዝገቦች በትክክል መዋቀሩን ያረጋግጡ፣ ጨምሮ SPF, ዲኪም, እና ዲኤምአርሲ የደብዳቤ መላኪያን ለማሻሻል እና ከአይፈለጌ መልእክት ለመጠበቅ መዝገቦች። ትክክለኛው የመለኪያዎች ውቅር በጽሁፉ ውስጥ ሊገኝ ይችላል የደብዳቤ አገልጋይ ምርመራዎች.
  2. እገዳዎችን ለማስቀረት እና የፖስታ መላክን ለማፋጠን የፋየርዎል ውቅረት እና የማዘዋወር ደንቦችን ጨምሮ የአውታረ መረብ ቅንብሮችን ያረጋግጡ።
  3. በአገልጋይ ጭነት መሰረት የመልእክት ወረፋ መለኪያዎችን ያዋቅሩ። ይህ ከፍተኛውን የወረፋ መጠን እና የጊዜ ማብቂያዎችን ማቀናበርን ሊያካትት ይችላል።
  4. ቀደም ሲል በዚህ ርዕስ ላይ የተነጋገርናቸውን መፍትሄዎች ተመልከት። አፈፃፀሙን ለማሻሻል የመልእክት ሰርቨር ዳታቤዙን በየጊዜው ያሻሽሉ፣ እንደ ዲኤንኤስ መጠይቆች ያሉ የውሂብ ፍለጋ እና ሂደትን ለማፋጠን መሸጎጫ ዘዴዎችን ይጠቀሙ።
  5. የመልእክት አገልጋዩ አሁንም ከፍተኛ ጭነት ካጋጠመው፣ እንደ የመልእክት አገልጋዮች ክላስተር ወይም የደመና መፍትሄዎችን የመሳሰለ አማራጮችን ያስቡ።

መደምደሚያ

የአገልጋይ ጭነት መጨመር በቀጥታ የድር ጣቢያን የመጫን ፍጥነት ይነካል። ስለዚህ ይህንን ሸክም በብቃት ማስተዳደር የሀብቱን ቀጣይነት ያለው ተግባር ለማረጋገጥ እና ለጎብኚዎች ተደራሽነቱን ለማሳደግ ቁልፍ ሚና ይጫወታል።

❮ ያለፈው መጣጥፍ የአገልጋይ ጭነት ምርመራዎች
ቀጣይ ርዕስ ❯ ሰርትቦት፡ ሰርተፍኬት እናመስጥርን መጫን

ስለ VPS ይጠይቁን።

በማንኛውም ጊዜ ቀንም ሆነ ማታ ለጥያቄዎችዎ መልስ ለመስጠት ሁል ጊዜ ዝግጁ ነን።