Knowledgebase Instruksi prasaja kanggo nggarap layanan Profitserver
main Knowledgebase Ngurangi beban server

Ngurangi beban server


Ing artikel iki, kita bakal nyelidiki kenapa beban server mundhak lan ngrembug macem-macem cara kanggo ngoptimalake proses beban dhuwur. Perhatian khusus bakal diwenehi kanggo optimasi kode ing Apache / Nginx lan MySQL, kita bakal ngomong babagan caching minangka alat bantu, lan uga nimbang ancaman eksternal sing bisa ditindakake, kayata serangan DDOS, lan cara kanggo nyegah.

Napa Server Load Ana

Sadurunge nerusake optimasi server, perlu nganakake analisis lengkap babagan beban sumber daya saiki. Iki kalebu ngukur beban CPU, panggunaan RAM, aktivitas jaringan, lan paramèter kunci liyane. Ngerteni dinamika lan beban puncak ngidini ngenali bottlenecks lan ngoptimalake alokasi sumber daya, saéngga nambah stabilitas lan kinerja infrastruktur server.

Kanggo ngatasi masalah dhisikan saka mbukak server dhuwur, disaranake nindakake a diagnostik server umum. Yen iki ora cukup, luwih rinci analisis sumber daya perlu. Minangka alat bantu, njelajah ing log saka Linux server bisa mbiyantu, minangka iki ngendi sumber masalah ditemokaké ing paling kasus.

Ngoptimalake Server Apache/Nginx

Tambah Load Server Amarga Indexing

Tambah beban amarga ngindeks ing server bisa kedadeyan, contone, nalika mesin telusur mindai akeh kaca ing situs sampeyan. Iki bisa nyebabake tambah panggunaan sumber daya server lan, akibate, nyuda kinerja situs. Ngenali sababe relatif prasaja; sampeyan kudu mbukak file sing ana ing:

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

Nalika diindeks dening mesin telusur, pangguna bakal weruh entri kaya ing ngisor iki:

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

Minangka solusi pisanan kanggo nyuda beban, sampeyan bisa nggunakake setelan tag meta "noindex" lan "nofollow" ing kaca sing ora perlu diindeks. Solusi kapindho yaiku .htaccess file, ing ngendi entri sing cocog karo mesin telusur tartamtu kudu ditambahake, contone, kanggo ndhelikake saka Yandex lan Google:

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

Kajaba iku, suntingan kudu ditindakake kanggo mesin telusur liyane. Perlu dicathet yen kemampuan .htaccess ora diwatesi mung kanggo mblokir indeksasi. Disaranake njupuk luwih menowo karo fitur utama ing artikel.

Nggunakake Setelan Caching

Setelan caching sing salah ing server uga bisa nyebabake beban dhuwur. Kanggo ngoptimalake parameter iki, owah-owahan sing cocog kudu digawe ing file konfigurasi utawa .htaccess. Ing kasus Apache, pilihan sing terakhir luwih disenengi, kanggo Nginx - sing pertama.

Ing Apache server, sampeyan kudu mbukak .htacess file lan lebokake kode ing ngisor iki:

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

Banjur, aktifake Kadaluwarsa modul nggunakake printah:

sudo a2enmod expires

Sawise iku, miwiti maneh server web:

sudo service apache2 restart

Lan aktifake modul kanthi nemtokake:

ExpiresActive On

Ing Nginx server, cukup kanggo nambah kode ing ngisor iki menyang file konfigurasi:

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

Lan nindakake reload layanan:

sudo service nginx restart

Elinga yen karo setelan iki, ing ngidini lan Deny arahan bakal dilewati.

Nggunakake Kompresi Data

Ngaktifake kompresi data nggunakake Gzip ing server web Apache lan Nginx mbantu nyuda jumlah data sing dikirim antarane server lan klien, sing nambah kinerja lan nyuda wektu mbukak kaca web.

Kanggo ngaktifake Gzip on Apache, sampeyan kudu ngaktifake mod_deflate modul:

sudo a2enmod deflate

Banjur, miwiti maneh server web:

sudo service apache2 restart

Lan pungkasane, tambahake blok ing ngisor iki menyang file konfigurasi utawa .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>

Konfigurasi iki ngidini kompresi kanggo jinis file tartamtu lan mateni kanggo gambar.

Ing cilik saka Nginx, konfigurasi dumadi ing http pamblokiran file konfigurasi. Kode ing ngisor iki kudu ditambahake:

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;

Kaya kanggo Apache, ing kene paramèter kompresi kanggo jinis file tartamtu disetel. Sawise nggawe owah-owahan menyang server web apa wae, reload layanan dibutuhake:

sudo service apache2 restart

Or

sudo service nginx restart

Serangan DDOS ing Server

Beban server sing dhuwur bisa kedadeyan amarga serangan DDoS. Ngenali anané serangan DDoS bisa ditindakake kanthi ngawasi paningkatan lalu lintas, panjaluk sing ora normal, lan kinerja server mudhun. Mriksa log kanggo panjalukan bola-bali saka siji alamat IP utawa pindai port uga bisa nuduhake serangan DDoS. Ana akeh langkah-langkah perlindungan, nanging kita mung bakal ngrembug babagan dhasar.

Nggunakake CDN (Content Delivery Network). CDN bisa dadi perantara ing antarane server web lan pangguna, nyebarake lalu lintas lan isi cache kanggo nyuda pengaruh serangan DDoS. CDN uga bisa duwe mekanisme proteksi DDoS sing dibangun, kalebu distribusi muatan lan nyaring lalu lintas.

Konfigurasi firewall lan sistem deteksi intrusi (IDS/IPS). Firewall bisa dikonfigurasi kanggo nyaring lalu lintas adhedhasar macem-macem kritéria, kayata alamat IP lan port. IDS/IPS bisa ndeteksi prilaku lalu lintas abnormal lan mblokir sambungan curiga. Piranti kasebut bisa efektif kanggo nelusuri lan mblokir lalu lintas sing bisa mbebayani.

Konfigurasi server web Apache lan Nginx kanggo nyuda pengaruh serangan DDoS.

Minangka solusi kanggo Apache, kita ngaktifake mod_evasive modul. Kanggo nindakake iki, mbusak komentar utawa tambahake baris ing ngisor iki httpd.conf or apache2.conf berkas konfigurasi:

LoadModule evasive20_module modules/mod_evasive.so

Ing file sing padha, sampeyan kudu nambah blok setelan:

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

Kajaba iku, kita ngaktifake mod_ratelimit modul:

LoadModule ratelimit_module modules/mod_ratelimit.so

Lan nambah konfigurasi:

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

Konfigurasi kanggo Nginx padha karo Apache. Ing nginx.conf file konfigurasi, arahan ing ngisor iki kudu digunakake:

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;

        ...
    }
}

Sawise nggawe owah-owahan ing saben layanan, kudu diisi maneh:

sudo systemctl restart apache2

Utawa:

sudo systemctl restart nginx

Conto-conto iki mung nyedhiyakake konfigurasi dhasar, sing bisa diadaptasi luwih saka syarat tartamtu lan sifat serangan.

Ngoptimalake pitakon MySQL

Ngoptimalake pitakon database MySQL ing server web bisa digayuh kanthi macem-macem cara, lan salah sijine yaiku konfigurasi file konfigurasi sing tepat. Biasane, file iki dijenengi my.cnf or my.ini lan dununge ing / lsp / or /etc/mysql/ direktori. Sampeyan kudu mbukak lan nggawe owah-owahan ing ngisor iki:

[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

Ayo uga nimbang rekomendasi tambahan sing bisa nggampangake interaksi karo database server:

  1. Gunakake NGEDANG printah sadurunge query SQL kanggo nganalisa eksekusi. Iki ngidini sampeyan entuk rencana eksekusi kanggo pitakon lan nemtokake indeks sing digunakake, tabel sing dipindai, lsp.
  2. Indeks nyepetake panelusuran data, supaya indeks sing dirancang kanthi bener bisa ningkatake kinerja pitakon kanthi signifikan. Pay manungsa waé menyang kolom sing kerep digunakake ing ngendi or NGGABUNGA kahanan.
  3. Aja nggunakake PILIH *. Temtokake mung kolom sing pancen perlu kanggo pitakon sampeyan, tinimbang milih kabeh kolom ing tabel.
  4. Aja nggunakake fungsi ing ngendi kahanan. Nggunakake fungsi (kayata KECIL, Ndhuwur, Kiri, Nang) ing ngendi kahanan bisa nggawe indeks ora ana guna. Coba supaya nggunakake langsung ing kahanan.
  5. Gunakake INNER JOIN yen bisa, amarga biasane luwih efisien. Uga, priksa manawa kolom sing cocog kanggo gabung duwe indeks.
  6. Gunakake watesan kanggo matesi jumlah baris bali yen sampeyan mung perlu kanggo sawetara asil tartamtu.
  7. Coba caching asil query, utamané yen padha arang ngganti, kanggo ngurangi beban server.

Server Mail Nggawe High Load ing Server

Ing bagean iki, kita bakal njelajah cara kanggo nemtokake manawa server mail ngalami beban dhuwur lan langkah-langkah apa sing bisa ditindakake kanggo ngoptimalake operasi, kalebu mriksa antrian pesen lan konfigurasi paramèter server. Mulai karo mriksa antrian pesen. Ing mailq utilitas bisa mbantu iki, kanggo ngaktifake, ketik perintah sing cocog ing terminal:

mailq

Iki bakal nampilake dhaptar pesen ing antrian, yen ana. Saben pesen bakal ditampilake kanthi pengenal unik lan informasi babagan status ngirim. Asil sing padha bisa dipikolehi kanthi mriksa log klien mail.

Umume kasus, beban dhuwur kedadeyan yen server kompromi nalika wiwit ngirim spam. Nanging, yen sawise mriksa administrator yakin manawa server kasebut durung diserang saka njaba lan pangguna ora nglirwakake spam, mula wektune kanggo ngoptimalake server email. Ing ngisor iki langkah-langkah sing bakal mbantu:

  1. Priksa manawa cathetan DNS domain sampeyan wis dikonfigurasi kanthi bener, kalebu SPF, DKIM, Lan Dmarc cathetan kanggo nambah pangiriman mail lan nglindhungi saka spam. Konfigurasi paramèter sing bener bisa ditemokake ing artikel ing diagnosa server mail.
  2. Priksa setelan jaringan, kalebu konfigurasi firewall lan aturan nuntun, kanggo nyegah pamblokiran lan nyepetake pangiriman email.
  3. Konfigurasi paramèter antrian pesen miturut beban server. Iki bisa uga kalebu nyetel ukuran antrian maksimum lan wektu entek.
  4. Coba solusi sing kita rembugan ing artikel iki sadurunge. Ngoptimalake database server mail kanthi periodik kanggo nambah kinerja, gunakake mekanisme caching kanggo nyepetake telusuran lan pangolahan data, kayata pitakon DNS.
  5. Yen server mail isih ajeg nemu beban dhuwur, nimbang opsi skala, kayata nggunakake kluster server mail utawa solusi maya.

kesimpulan

Tambah beban server langsung mengaruhi kacepetan loading situs web, sing pungkasane nyebabake pengalaman pangguna lan reputasi ing mesin telusuran. Mangkono, kanthi efektif ngatur beban iki nduweni peran penting kanggo njamin fungsi sumber daya sing terus-terusan lan nambah aksesibilitas kanggo pengunjung.

❮ Artikel sadurungé Diagnostik Muatan Server
Artikel sabanjure ❯ Certbot: Nginstal Let's Encrypt Certificate

Takon kita babagan VPS

Kita mesthi siyap mangsuli pitakon sampeyan kapan wae awan utawa wengi.