Дар ин мақола, мо мефаҳмем, ки чаро сарбории сервер зиёд мешавад ва роҳҳои гуногуни оптимизатсияи равандҳои сарбории баландро муҳокима хоҳем кард. Диққати махсус ба оптимизатсияи код дар 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
Пас аз он, сервери вебро бозоғоз намоед:
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 (Шабакаи Delivery Content). 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
Биёед инчунин тавсияҳои иловагиро баррасӣ кунем, ки метавонанд ҳамкорӣ бо пойгоҳи додаҳои серверро осон кунанд:
- истифода ТАВСИФИ фармон пеш аз дархости SQL барои таҳлили иҷрои он. Ин ба шумо имкон медиҳад, ки нақшаи иҷрои дархостро гиред ва муайян кунед, ки кадом индексҳо истифода мешаванд, кадом ҷадвалҳо скан карда мешаванд ва ғайра.
- Индексҳо ҷустуҷӯи маълумотро суръат мебахшанд, аз ин рӯ индексҳои дуруст тарҳрезишуда метавонанд иҷрои дархостҳоро ба таври назаррас беҳтар кунанд. Ба сутунҳое, ки дар онҳо зуд-зуд истифода мешаванд, диққат диҳед НОҲИЯИ ПАНҶ or ҶОЙҲО шароит.
- Нагузоред, ки истифодаи ИНТИХОБ *. Ба ҷои интихоби ҳамаи сутунҳои ҷадвал, танҳо он сутунҳоеро, ки барои дархости шумо воқеан заруранд, муайян кунед.
- Истифодаи функсияҳоро дар НОҲИЯИ ПАНҶ шароит. Истифодаи функсияҳо (масалан ЛОХУТЙ, Болоӣ, Лап, Ҳуқуқ) дар НОҲИЯИ ПАНҶ шароит метавонад индексҳоро бефоида гардонад. Кӯшиш кунед, ки аз истифодаи бевоситаи онҳо дар шароит худдорӣ намоед.
- истифода бурдан ИНТИХОБОТ дар он ҷое ки имконпазир аст, зеро он одатан самараноктар аст. Инчунин, боварӣ ҳосил кунед, ки сутунҳои мувофиқ барои пайвастшавӣ индексҳо доранд.
- истифода бурдан Маҳдуд барои маҳдуд кардани шумораи сатрҳои баргардонидашуда, агар ба шумо танҳо шумораи муайяни натиҷаҳо лозим бошад.
- Барои кам кардани сарбории сервер, натиҷаҳои дархости кэшро баррасӣ кунед, хусусан агар онҳо хеле кам тағйир диҳанд.
Сервери почта сарбории баландро дар сервер эҷод мекунад
Дар ин бахш мо мефаҳмем, ки чӣ тавр муайян кардани он, ки сервери почта сарбории зиёд дорад ва барои оптимизатсияи кори он чӣ гуна чораҳо андешидан мумкин аст, аз ҷумла тафтиши навбати паёмҳо ва танзими параметрҳои сервер. Бо тафтиши навбати паём оғоз кунед. Дар почта утилита метавонад дар ин кор кӯмак кунад, барои фаъол кардани он, дар терминал фармони мувофиқро ворид кунед:
mailq
Ин рӯйхати паёмҳоро дар навбат нишон медиҳад, агар мавҷуд бошад. Ҳар як паём бо идентификатори беназири худ ва маълумот дар бораи ҳолати ирсолкунанда намоиш дода мешавад. Натиҷаи шабеҳро тавассути баррасии гузоришҳои муштарии почта ба даст овардан мумкин аст.
Дар аксари мавридҳо, сарбории баланд ҳангоми вайрон шудани сервер ҳангоми фиристодани спам ба амал меояд. Бо вуҷуди ин, агар пас аз тафтиши администратор боварӣ дошта бошад, ки сервер аз берун ҳамла накардааст ва корбарон спамро беэътиноӣ намекунанд, вақти он расидааст, ки ба оптимизатсияи сервери почта гузаред. Инҳоянд қадамҳое, ки кӯмак хоҳанд кард:
- Боварӣ ҳосил кунед, ки сабтҳои DNS домени шумо дуруст танзим карда шудаанд, аз ҷумла ФЊИА, ДКИМва DMARC сабтҳо барои беҳтар кардани интиқоли почта ва муҳофизат аз спам. Конфигуратсияи дурусти параметрҳоро дар мақола пайдо кардан мумкин аст ташхиси сервери почта.
- Танзимоти шабака, аз ҷумла конфигуратсияи девор ва қоидаҳои масирро тафтиш кунед, то аз блокҳо канорагирӣ кунед ва интиқоли паёмҳоро суръат бахшед.
- Параметрҳои навбати паёмро мувофиқи сарбории сервер танзим кунед. Ин метавонад муқаррар кардани андозаи максималии навбат ва мӯҳлатҳои вақтро дар бар гирад.
- Роҳҳоеро, ки мо дар ин мақола қаблан муҳокима кардем, дида бароед. Давра ба давра базаи сервери почтаро барои беҳтар кардани кор оптимизатсия кунед, механизмҳои кэшро барои суръат бахшидан ба ҷустуҷӯ ва коркарди маълумот, ба монанди дархостҳои DNS истифода баред.
- Агар сервери почта то ҳол мунтазам ба сарбории баланд дучор шавад, имконоти миқёсро баррасӣ кунед, масалан, истифодаи кластери серверҳои почта ё ҳалли абрӣ.
хулоса
Афзоиши сарбории сервер мустақиман ба суръати боркунии вебсайт таъсир мерасонад ва дар ниҳоят ба таҷрибаи корбар ва обрӯи системаҳои ҷустуҷӯ таъсир мерасонад. Ҳамин тариқ, идоракунии самараноки ин сарборӣ дар таъмини фаъолияти пайвастаи манбаъ ва баланд бардоштани дастрасии он барои меҳмонон нақши калидӣ мебозад.