આ લેખમાં, આપણે સર્વર લોડમાં વધારો શા માટે થાય છે તે શોધીશું અને હાઇ-લોડ પ્રક્રિયાઓને ઑપ્ટિમાઇઝ કરવાની વિવિધ રીતોની ચર્ચા કરીશું. 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
નોંધ કરો કે આ સેટિંગ્સ સાથે, મંજૂરી આપો અને નકારો નિર્દેશોને બાયપાસ કરવામાં આવશે.
ડેટા કમ્પ્રેશનનો ઉપયોગ
Apache અને Nginx વેબ સર્વર્સ પર Gzip નો ઉપયોગ કરીને ડેટા કમ્પ્રેશનને સક્ષમ કરવાથી સર્વર અને ક્લાયંટ વચ્ચે ટ્રાન્સમિટ થતા ડેટાની માત્રા ઘટાડવામાં મદદ મળે છે, જે કામગીરીમાં સુધારો કરે છે અને વેબ પેજ લોડ થવાનો સમય ઘટાડે છે.
Apache પર Gzip ને સક્ષમ કરવા માટે , તમારે 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 (કન્ટેન્ટ ડિલિવરી નેટવર્ક) નો ઉપયોગ . CDN તમારા વેબ સર્વર અને વપરાશકર્તાઓ વચ્ચે મધ્યસ્થી તરીકે સેવા આપી શકે છે, ટ્રાફિકનું વિતરણ કરી શકે છે અને DDoS હુમલાની અસર ઘટાડવા માટે સામગ્રીને કેશ કરી શકે છે. CDN માં લોડ વિતરણ અને ટ્રાફિક ફિલ્ટરિંગ સહિત બિલ્ટ-ઇન DDoS સુરક્ષા પદ્ધતિઓ પણ હોઈ શકે છે.
ફાયરવોલ્સ અને ઇન્ટ્રુઝન ડિટેક્શન સિસ્ટમ્સ (IDS/IPS) ને ગોઠવવી . ફાયરવોલ્સને IP સરનામાં અને પોર્ટ જેવા વિવિધ માપદંડોના આધારે ટ્રાફિકને ફિલ્ટર કરવા માટે ગોઠવી શકાય છે. IDS/IPS અસામાન્ય ટ્રાફિક વર્તણૂક શોધી શકે છે અને શંકાસ્પદ કનેક્શન્સને અવરોધિત કરી શકે છે. આ સાધનો સંભવિત દૂષિત ટ્રાફિકને ટ્રેક કરવા અને અવરોધિત કરવામાં અસરકારક હોઈ શકે છે.
DDoS હુમલાઓની અસર ઘટાડવા માટે Apache અને Nginx વેબ સર્વર્સને ગોઠવી રહ્યા છીએ.
Apache માટે ઉકેલ તરીકે, અમે mod_evasive મોડ્યુલને સક્ષમ કરીએ છીએ. આ કરવા માટે, httpd.conf અથવા 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 અથવા my.ini હોય છે અને તે /etc/ અથવા /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 જોડાઓ શરતો.
- ઉપયોગ કરવાનું ટાળો પસંદ કરો *. કોષ્ટકમાં બધા કૉલમ પસંદ કરવાને બદલે, ફક્ત તે જ કૉલમનો ઉલ્લેખ કરો જે તમારી ક્વેરી માટે ખરેખર જરૂરી છે.
- માં ફંક્શનનો ઉપયોગ કરવાનું ટાળો ક્યાં છે શરતો. કાર્યોનો ઉપયોગ (જેમ કે નીચેનું, અપર, ડાબું, અધિકાર) માં ક્યાં છે શરતો સૂચકાંકોને નકામી બનાવી શકે છે. પરિસ્થિતિઓમાં તેનો સીધો ઉપયોગ ટાળવાનો પ્રયાસ કરો.
- વાપરવુ આંતરિક જોડાણ શક્ય હોય ત્યાં, કારણ કે તે સામાન્ય રીતે વધુ કાર્યક્ષમ હોય છે. ઉપરાંત, ખાતરી કરો કે જોડાવા માટેના અનુરૂપ કૉલમમાં અનુક્રમણિકાઓ હોય.
- વાપરવુ LIMIT જો તમને ફક્ત ચોક્કસ સંખ્યામાં પરિણામો મેળવવાની જરૂર હોય, તો પરત કરેલી પંક્તિઓની સંખ્યાને મર્યાદિત કરવા માટે.
- સર્વર લોડ ઘટાડવા માટે, ખાસ કરીને જો તે ભાગ્યે જ બદલાતા હોય, તો ક્વેરી પરિણામોને કેશ કરવાનું વિચારો.
મેઇલ સર્વર સર્વર પર હાઇ લોડ બનાવે છે
આ વિભાગમાં, આપણે શોધીશું કે મેઇલ સર્વર પર વધુ ભાર છે કે નહીં તે કેવી રીતે નક્કી કરવું અને તેના ઓપરેશનને ઑપ્ટિમાઇઝ કરવા માટે કયા પગલાં લઈ શકાય, જેમાં મેસેજ કતાર તપાસવી અને સર્વર પરિમાણોને ગોઠવવાનો સમાવેશ થાય છે. મેસેજ કતાર તપાસવાથી શરૂઆત કરો. mailq ઉપયોગિતા આમાં મદદ કરી શકે છે, તેને સક્રિય કરવા માટે, ટર્મિનલમાં અનુરૂપ આદેશ દાખલ કરો:
mailq
આ કતારમાં સંદેશાઓની યાદી પ્રદર્શિત કરશે, જો કોઈ હોય તો. દરેક સંદેશ તેના અનન્ય ઓળખકર્તા અને મોકલવાની સ્થિતિ વિશેની માહિતી સાથે પ્રદર્શિત થશે. મેઇલ ક્લાયંટ લોગની સમીક્ષા કરીને સમાન પરિણામ મેળવી શકાય છે.
મોટાભાગના કિસ્સાઓમાં, જ્યારે સર્વર સ્પામ મોકલવાનું શરૂ કરે છે ત્યારે તેમાં ખામી સર્જાય છે ત્યારે ભારે ભારણ આવે છે. જો કે, જો તપાસ કર્યા પછી એડમિનિસ્ટ્રેટરને ખાતરી થાય કે સર્વર પર બહારથી હુમલો થયો નથી અને વપરાશકર્તાઓ સ્પામને અવગણી રહ્યા નથી, તો મેઇલ સર્વરને ઑપ્ટિમાઇઝ કરવા તરફ આગળ વધવાનો સમય આવી ગયો છે. અહીં પગલાં છે જે મદદ કરશે:
- ખાતરી કરો કે તમારા ડોમેનના DNS રેકોર્ડ યોગ્ય રીતે ગોઠવેલા છે, જેમાં શામેલ છે એસપીએફ, ડી.કે.આઇ.એમ., અને DMARC મેઇલ ડિલિવરીને સુધારવા અને સ્પામ સામે રક્ષણ આપવા માટે રેકોર્ડ્સ. પરિમાણોનું યોગ્ય રૂપરેખાંકન લેખમાં મળી શકે છે મેઇલ સર્વર ડાયગ્નોસ્ટિક્સ.
- બ્લોક ટાળવા અને મેઇલ ડિલિવરીને ઝડપી બનાવવા માટે, ફાયરવોલ ગોઠવણી અને રૂટીંગ નિયમો સહિત નેટવર્ક સેટિંગ્સ તપાસો.
- સર્વર લોડ અનુસાર સંદેશ કતાર પરિમાણો ગોઠવો. આમાં મહત્તમ કતાર કદ અને સમયસમાપ્તિ સેટ કરવાનો સમાવેશ થઈ શકે છે.
- આ લેખમાં આપણે અગાઉ ચર્ચા કરેલા ઉકેલોનો વિચાર કરો. પ્રદર્શન સુધારવા માટે સમયાંતરે મેઇલ સર્વર ડેટાબેઝને ઑપ્ટિમાઇઝ કરો, ડેટા શોધ અને પ્રક્રિયાને ઝડપી બનાવવા માટે કેશીંગ મિકેનિઝમનો ઉપયોગ કરો, જેમ કે DNS ક્વેરીઝ.
- જો મેઇલ સર્વર હજુ પણ નિયમિતપણે ઊંચા ભારનો સામનો કરે છે, તો સ્કેલિંગ વિકલ્પોનો વિચાર કરો, જેમ કે મેઇલ સર્વર્સના ક્લસ્ટરનો ઉપયોગ અથવા ક્લાઉડ સોલ્યુશન્સ.
ઉપસંહાર
સર્વર લોડમાં વધારો વેબસાઇટ લોડિંગ ગતિને સીધી અસર કરે છે, જે આખરે સર્ચ એન્જિનમાં વપરાશકર્તા અનુભવ અને પ્રતિષ્ઠાને અસર કરે છે. આમ, આ લોડનું અસરકારક રીતે સંચાલન સંસાધનની સતત કાર્યક્ષમતા સુનિશ્ચિત કરવામાં અને મુલાકાતીઓ માટે તેની સુલભતા વધારવામાં મુખ્ય ભૂમિકા ભજવે છે.