यस लेखमा, हामी सर्भर लोड किन बढ्छ भन्ने कुराको खोजी गर्नेछौं र उच्च-लोड प्रक्रियाहरूलाई अनुकूलन गर्ने विभिन्न तरिकाहरू छलफल गर्नेछौं। Apache/Nginx र MySQL मा कोड अप्टिमाइजेसनमा विशेष ध्यान दिइनेछ, हामी सहायक उपकरणको रूपमा क्यासिङको बारेमा कुरा गर्नेछौं, र DDOS आक्रमणहरू जस्ता सम्भावित बाह्य खतराहरू र तिनीहरूलाई रोक्ने तरिकाहरू पनि विचार गर्नेछौं।
किन सर्भर लोड हुन्छ
सर्भर अप्टिमाइजेसनमा अगाडि बढ्नु अघि, स्रोतहरूमा हालको भारको गहन विश्लेषण गर्न आवश्यक छ। यसमा CPU लोड, 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)"
लोड कम गर्ने पहिलो समाधानको रूपमा, तपाईंले मेटा ट्यागहरूको सेटिङ प्रयोग गर्न सक्नुहुन्छ "नोइन्डेक्स" र "नोफलो" अनुक्रमणिका गर्न आवश्यक नभएका पृष्ठहरूमा। दोस्रो समाधान हो .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 को लागि उपयुक्त छ - पहिलो।
मा एक अपाचे सर्भर, तपाईंले खोल्नु पर्छ .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 अपाचे, तपाईंले सक्रिय गर्न आवश्यक छ 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;
जस्तै अपाचे, यहाँ निश्चित प्रकारका फाइलहरूको लागि कम्प्रेसन प्यारामिटरहरू सेट गरिएका छन्। कुनै पनि वेब सर्भरमा परिवर्तन गरेपछि, सेवा पुन: लोड आवश्यक छ:
sudo service apache2 restart
Or
sudo service nginx restart
सर्भरमा DDOS आक्रमण
DDoS आक्रमणको परिणामस्वरूप सर्भरमा उच्च लोड हुन सक्छ। DDoS आक्रमणको उपस्थिति पहिचान गर्न ट्राफिकमा अचानक वृद्धि, असामान्य अनुरोधहरू, र सर्भर कार्यसम्पादनमा गिरावटको निगरानी गरेर गर्न सकिन्छ। एउटै IP ठेगाना वा पोर्ट स्क्यानिङबाट बारम्बार अनुरोधहरूको लागि लगहरूको समीक्षा गर्नाले पनि सम्भावित DDoS आक्रमणलाई संकेत गर्न सक्छ। धेरै सुरक्षा उपायहरू छन्, तर हामी केवल आधारभूत कुराहरू छलफल गर्नेछौं।
CDN (सामग्री वितरण नेटवर्क) प्रयोग गर्दै। CDN ले तपाईंको वेब सर्भर र प्रयोगकर्ताहरू बीच मध्यस्थकर्ताको रूपमा काम गर्न सक्छ, DDoS आक्रमणको प्रभावलाई कम गर्न ट्राफिक वितरण र सामग्री क्यास गर्ने काम गर्दछ। CDN मा लोड वितरण र ट्राफिक फिल्टरिङ सहित निर्मित DDoS सुरक्षा संयन्त्रहरू पनि हुन सक्छन्।
फायरवालहरू र घुसपैठ पत्ता लगाउने प्रणालीहरू (IDS/IPS) कन्फिगर गर्ने। फायरवालहरूलाई विभिन्न मापदण्डहरू जस्तै IP ठेगानाहरू र पोर्टहरूको आधारमा ट्राफिक फिल्टर गर्न कन्फिगर गर्न सकिन्छ। 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>
को लागि कन्फिगरेसन निजिनक्स जस्तै छ अपाचे। मा 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
सर्भर डाटाबेससँग अन्तर्क्रियालाई सहज बनाउन सक्ने थप सिफारिसहरू पनि विचार गरौं:
- प्रयोग गर्नुहोस् बुझाउनुहोस् SQL क्वेरीको कार्यान्वयन विश्लेषण गर्न पहिले आदेश दिनुहोस्। यसले तपाईंलाई क्वेरीको लागि कार्यान्वयन योजना प्राप्त गर्न र कुन अनुक्रमणिकाहरू प्रयोग गरिन्छ, कुन तालिकाहरू स्क्यान गरिन्छ, आदि निर्धारण गर्न अनुमति दिन्छ।
- अनुक्रमणिकाहरूले डेटा खोजलाई गति दिन्छन्, त्यसैले राम्रोसँग डिजाइन गरिएका अनुक्रमणिकाहरूले क्वेरी कार्यसम्पादनमा उल्लेखनीय सुधार गर्न सक्छन्। बारम्बार प्रयोग हुने स्तम्भहरूमा ध्यान दिनुहोस् कहाँ or शामिल अवस्था।
- प्रयोग नगर्नुहोस् चयन गर्नुहोस् *। तालिकामा सबै स्तम्भहरू चयन गर्नुको सट्टा, तपाईंको क्वेरीको लागि साँच्चै आवश्यक पर्ने स्तम्भहरू मात्र निर्दिष्ट गर्नुहोस्।
- मा प्रकार्यहरू प्रयोग नगर्नुहोस् कहाँ अवस्थाहरू। प्रकार्यहरू प्रयोग गर्दै (जस्तै कम, अपर, LEFT, सही) भित्र कहाँ अवस्थाहरूले अनुक्रमणिकाहरूलाई बेकार बनाउन सक्छ। अवस्थाहरूमा तिनीहरूको प्रत्यक्ष प्रयोगबाट बच्न प्रयास गर्नुहोस्।
- प्रयोग इन्टरनेट जोड्नुहोस् सम्भव भएसम्म, किनकि यो सामान्यतया बढी प्रभावकारी हुन्छ। साथै, जोड्नको लागि सम्बन्धित स्तम्भहरूमा अनुक्रमणिकाहरू छन् भनी सुनिश्चित गर्नुहोस्।
- प्रयोग LIMIT यदि तपाईंलाई निश्चित संख्यामा मात्र परिणामहरू प्राप्त गर्न आवश्यक छ भने फर्काइएका पङ्क्तिहरूको संख्या सीमित गर्न।
- सर्भर लोड कम गर्न, विशेष गरी यदि तिनीहरू विरलै परिवर्तन हुन्छन् भने, क्यासिङ क्वेरी परिणामहरू विचार गर्नुहोस्।
मेल सर्भरले सर्भरमा उच्च लोड सिर्जना गर्दछ
यस खण्डमा, हामी मेल सर्भरले उच्च लोड अनुभव गरिरहेको छ भनेर कसरी निर्धारण गर्ने र सन्देश क्यु जाँच गर्ने र सर्भर प्यारामिटरहरू कन्फिगर गर्ने सहित यसको सञ्चालनलाई अनुकूलन गर्न के कदमहरू चाल्न सकिन्छ भनेर अन्वेषण गर्नेछौं। सन्देश क्यु जाँच गरेर सुरु गर्नुहोस्। मेलक्यू उपयोगिताले यसमा मद्दत गर्न सक्छ, यसलाई सक्रिय गर्न, टर्मिनलमा सम्बन्धित आदेश प्रविष्ट गर्नुहोस्:
mailq
यसले क्युमा रहेका सन्देशहरूको सूची प्रदर्शन गर्नेछ, यदि कुनै छ भने। प्रत्येक सन्देश यसको अद्वितीय पहिचानकर्ता र पठाउने स्थितिको बारेमा जानकारीको साथ प्रदर्शित हुनेछ। मेल क्लाइन्ट लगहरू समीक्षा गरेर समान परिणाम प्राप्त गर्न सकिन्छ।
धेरैजसो अवस्थामा, स्पाम पठाउन सुरु गर्दा सर्भरमा समस्या आउँदा उच्च लोड हुन्छ। यद्यपि, यदि जाँच गरिसकेपछि प्रशासक विश्वस्त छन् कि सर्भर बाहिरबाट आक्रमण गरिएको छैन र प्रयोगकर्ताहरूले स्पामलाई बेवास्ता गरिरहेका छैनन् भने, मेल सर्भरलाई अनुकूलन गर्ने समय आएको छ। यहाँ मद्दत गर्ने चरणहरू छन्:
- तपाईंको डोमेनको DNS रेकर्डहरू सही रूपमा कन्फिगर गरिएको छ भनी सुनिश्चित गर्नुहोस्, जसमा निम्न समावेश छन्: SPF, DKIM, र DMARC मेल डेलिभरी सुधार गर्न र स्पामबाट जोगाउन रेकर्डहरू। प्यारामिटरहरूको सही कन्फिगरेसन लेखमा पाउन सकिन्छ मेल सर्भर निदान.
- ब्लकहरूबाट बच्न र मेल डेलिभरीको गति बढाउन फायरवाल कन्फिगरेसन र राउटिङ नियमहरू सहित नेटवर्क सेटिङहरू जाँच गर्नुहोस्।
- सर्भर लोड अनुसार सन्देश लाम प्यारामिटरहरू कन्फिगर गर्नुहोस्। यसमा अधिकतम लाम आकार र टाइमआउट सेट गर्ने समावेश हुन सक्छ।
- यस लेखमा हामीले पहिले छलफल गरेका समाधानहरू विचार गर्नुहोस्। कार्यसम्पादन सुधार गर्न मेल सर्भर डाटाबेसलाई समय-समयमा अप्टिमाइज गर्नुहोस्, डेटा खोज र प्रशोधनलाई गति दिन क्यासिङ संयन्त्रहरू प्रयोग गर्नुहोस्, जस्तै DNS क्वेरीहरू।
- यदि मेल सर्भरले अझै पनि नियमित रूपमा उच्च लोडको सामना गर्छ भने, मेल सर्भरहरूको क्लस्टर वा क्लाउड समाधानहरू प्रयोग गर्ने जस्ता स्केलिंग विकल्पहरू विचार गर्नुहोस्।
निष्कर्ष
सर्भर लोड बढ्दा वेबसाइट लोड हुने गतिमा प्रत्यक्ष असर पर्छ, जसले गर्दा खोज इन्जिनहरूमा प्रयोगकर्ताको अनुभव र प्रतिष्ठामा असर पर्छ। यसरी, यो लोडलाई प्रभावकारी रूपमा व्यवस्थापन गर्नाले स्रोतको निरन्तर कार्यक्षमता सुनिश्चित गर्न र आगन्तुकहरूको लागि यसको पहुँच बढाउनमा महत्वपूर्ण भूमिका खेल्छ।