Nasihu 5 don Haɓaka Ayyukan Sabar Yanar Gizon na Apache


A cewar wani rahoto na baya-bayan nan na Netcraft (sanannen kamfanin Intanet wanda ke ba da a tsakanin sauran ayyuka na kididdiga masu amfani da gidan yanar gizon), Apache ya ci gaba da kasancewa sabar gidan yanar gizo da aka fi amfani da ita tsakanin shafuka da kwamfutoci masu fuskantar Intanet.

Bugu da ƙari, Apache yana ci gaba da samun girma mafi girma a tsakanin manyan sabar yanar gizo, sai Nginx da IIS suka biyo baya. Don haka, idan kai mai kula da tsarin ne mai kula da sarrafa shigarwar Apache, kana buƙatar sanin yadda ake tabbatar da sabar gidan yanar gizon ku tana yin iya gwargwadon ƙarfinta gwargwadon bukatun ku (ko ku abokin ciniki).

A cikin wannan labarin za mu tattauna ƴan shawarwarin da za su taimaka muku tabbatar da cewa Apache zai yi aiki lafiya kuma ya sami damar sarrafa adadin buƙatun da kuke tsammani daga abokan ciniki na nesa.

Koyaya, don Allah a tuna cewa ba a ƙirƙira Apache tare da manufar saita bayanan ma'auni ba - amma, duk da haka, har yanzu yana da ikon samar da babban aiki a kusan kowane yanayin amfani da zaku iya tunani akai.

NASIHA #1: Koyaushe ci gaba da sabunta Apache zuwa sabon sigar sa

Yana tafiya ba tare da faɗi cewa shigar da sabuwar sigar Apache wataƙila ɗaya daga cikin abubuwan farko da kuke buƙatar la'akari ba. Tun daga Nuwamba 19, 2015, sabon sigar Apache da ake samu a cikin ma'ajiyar CentOS 7 shine 2.4.6, yayin da a cikin Debian's 2.4.10.

Koyaya, ana iya samun ci gaba na kwanan nan ko gyaran kwaro wanda aka ƙara zuwa sabon sigar barga da aka fitar, wanda aka samar don saukewa da shigar daga tushe. Hakanan ana ba da umarnin tattarawa da umarnin shigarwa anan - kawai ku tuna cewa idan kun zaɓi wannan hanyar sabuntawa, kuna iya son adana fayilolin sanyi/rukunin yanar gizo/runduna kama-da-wane a matsayin taka tsantsan.

A kowane hali, kuna iya duba sigar ku a halin yanzu da aka shigar kamar haka:

# httpd -v               [On RedHat/CentOS based systems]
# apache2 –v             [On Debian/Ubuntu based systems] 

A matsayin ka'idar babban yatsan hannu, tsaya tare da tsarin sabuntawa wanda mai sarrafa fakitin ya bayar na zaɓin rarrabawar da kuka zaɓa (yum update httpdko aptitude safe-upgrade apache2, don CentOS ko Debian, bi da bi) sai dai idan babu wata hanya. Kuna iya karanta sabbin bayanan bayanan saki a cikin sashin Takardun Takardun Apache a cikin gidan yanar gizon Sabar HTTP na Apache.

Tip #2: Idan kana amfani da Kernel wanda ya girmi 2.4, la'akari da haɓakawa yanzu

Me yasa? Siffofin Kernel 2.4 da sama suna da tsarin tsarin kernel sendfile wanda aka kunna ta tsohuwa. Wannan, bi da bi, yana sauƙaƙe canja wurin fayil ɗin cibiyar sadarwa mai girma (wanda ake so a cikin mahallin sadarwar uwar garken yanar gizo-abokin ciniki) kuma yana ba Apache damar isar da abun ciki cikin sauri kuma tare da ƙananan amfani da CPU ta hanyar karantawa da aika ayyukan lokaci guda.

Kuna iya duba kernel ɗin ku a halin yanzu tare da:

# uname -r

kuma kwatanta shi da sabuwar kwaya mai ƙarfi a www.kernel.org (4.3 a lokacin rubuta wannan).

Kodayake tsari ne da ba a yi niyya don masu farawa ba, haɓaka kernel ɗinku shine motsa jiki mai ban sha'awa don ƙarin koyo game da abubuwan ciki na Linux.

NASIHA #3: Zaɓi Module-Mai-Mai-Tsarki (MPM) wanda ke aiki mafi kyau ga shari'ar ku

A aikace, MPMs suna haɓaka aikin Apache na yau da kullun ta hanyar ba ku damar yanke shawarar yadda ake saita sabar gidan yanar gizo don ɗaure zuwa tashoshin sadarwa akan na'ura, karɓar buƙatun abokan ciniki, da amfani da tsarin yara (da zaren, madadin) don ɗaukar irin waɗannan buƙatun.

Da farko da sigar 2.4, Apache yana ba da MPM daban-daban guda uku don zaɓar daga, ya danganta da bukatun ku:

  1. The prefork MPM yana amfani da matakan yara da yawa ba tare da zaren zare ba. Kowane tsari yana sarrafa haɗi ɗaya a lokaci ɗaya ba tare da ƙirƙirar zaren daban ba ga kowane. Ba tare da yin cikakken bayani ba, za mu iya cewa za ku so ku yi amfani da wannan MPM ne kawai a lokacin da za ku gyara wani aikace-aikacen da ke amfani da shi, ko kuma idan aikace-aikacenku yana buƙatar yin aiki da su, nau'o'i marasa aminci kamar mod_php.
  2. Ma'aikacin code> MPM yana amfani da zare da yawa a kowane tsarin yaro, inda kowane zaren yana ɗaukar haɗin gwiwa ɗaya lokaci guda. Wannan zaɓi ne mai kyau ga manyan sabar masu zirga-zirga saboda yana ba da damar ƙarin haɗin haɗin kai tare da ƙarancin RAM fiye da na baya.
  3. A ƙarshe, lalle MPM shine tsohowar MPM a yawancin shigarwar Apache don nau'ikan 2.4 da sama. Ya yi kama da MPM ma'aikaci a cikin cewa yana ƙirƙirar zaren da yawa ta kowane tsari na yaro amma tare da fa'ida: yana haifar da haɗin gwiwar KeepAlive ko mara aiki (yayin da suke cikin wannan jihar) don sarrafa shi ta hanyar zaren guda ɗaya, don haka yana 'yantar da ƙwaƙwalwar ajiya wanda zai iya. a kasaftawa ga sauran zaren. Wannan MPM ba ta dace da amfani da na'urori marasa aminci ba kamar mod_php, wanda dole ne a yi amfani da madadin irin wannan PHP-FPM maimakon.

Don bincika MPM ɗin da shigarwar Apache ɗinku ke amfani da shi, kuna iya yin:

# httpd -V

Hoton da ke ƙasa yana nuna cewa wannan sabar gidan yanar gizo na musamman yana amfani da MPM prefork.

Don canza wannan, kuna buƙatar gyara:

# /etc/httpd/conf.modules.d/00-mpm.conf          [On RedHat/CentOS based systems]
# /etc/apache2/mods-available/<mpm>.load   [On Debian/Ubuntu based systems]

Inda zai iya zama mpm_event, mpm_worker, ko mpm_prefork.

da rashin gamsuwa da layin da ke loda tsarin da ake so kamar haka:

LoadModule mpm_event_module modules/mod_mpm_event.so

Lura: Don sa taron MPM yayi aiki a cikin Debian, ƙila ka shigar da fakitin libapache2-mod-fastcgi daga wuraren ajiyar kuɗi marasa kyauta.

Bugu da ƙari, don CentOS kuna buƙatar php-fpm (tare da fcgi da mod_fcgid) yayin da a cikin Debian ana kiranta php5-fpm (tare da apache2-mpm-event).

Ƙarshe, amma ba kalla ba, sake kunna sabar gidan yanar gizo da sabuwar sabar php-fpm (ko php5-fpm):

# systemctl restart httpd php-fpm && systemctl enable httpd php-fpm
# systemctl restart apache2 php5-fpm && systemctl enable apache2 php5-fpm

Kodayake kuna iya saita Apache don amfani da takamaiman MPM, ana iya ƙetare wannan ƙa'idar akan tsarin runduna ta kowane iri a cikin salo iri ɗaya kamar yadda aka nuna a baya.

Kawai jefa alamun da suka dace a cikin fayil ɗin sanyi don kowane mai masaukin baki kuma kuna shirye don tafiya - amma tabbatar da cewa kuna amfani da MPM ɗaya kawai a kowane vhost.

A ƙarshe, da fatan za a lura cewa ba tare da la'akari da rarrabawar da kuka zaɓa ba, php-fpm ya dogara da aiwatar da FastCGI, wanda shine dalilin da ya sa na ba da shawarar ƙarin shigarwar kunshin a baya.

Don ƙarin cikakkun bayanai da misalai akan php-fpm da kuma yadda zai iya tare da taron MPM haɓaka aikin Apache, ya kamata ku koma ga takaddun hukuma.

Wannan shine abin da na gani bayan canza tsoho MPM daga prefork zuwa taron a cikin akwati guda da aka nuna a hoton da ya gabata:

A cikin CentOS 7, kuna buƙatar tabbatar da cewa an kunna sabis ɗin http da https ta hanyar Tacewar zaɓi, kuma an ƙara ƙirar hanyar sadarwa da kyau zuwa yankin tsoho.

Misali:

# firewall-cmd --zone=internal --add-interface=tun6to4 
# firewall-cmd --zone=internal --add-interface=tun6to4 --permanent 
# firewall-cmd --set-default-zone=internal 
# firewall-cmd --add-service=http 
# firewall-cmd --add-service=https 
# firewall-cmd --add-service=http --permanent 
# firewall-cmd --add-service=https --permanent 
# firewall-cmd --reload

Dalilin da ya sa na kawo wannan shine saboda kwanan nan na fuskanci wani batu inda saitunan saitunan wuta na tsoho a cikin girgije VPS ya hana php-fpm da Apache daga sarrafa fayilolin php.

A matsayin gwaji na asali (Na tabbata zaku iya tunanin ƙarin rikitarwa ko masu damuwa), zan ƙirƙiri fayil ɗin php wanda ke bincika wanzuwar wani fayil mai suna test.php a cikin wannan shugabanci na CentOS guda biyu. Sabbin 7 masu halaye iri ɗaya da kaya iri ɗaya amma tare da MPM daban-daban. Ɗaya daga cikinsu zai yi amfani da taron kuma ɗayan zai yi amfani da prefork:

Wannan ita ce lambar php ɗin da na adana a cikin fayil mai suna checkiffileexists.php:

<?php
$filename = 'test.php';

if (file_exists($filename)) {
    echo "The file $filename exists";
} else {
    echo "The file $filename does not exist";
}
?>

Sa'an nan kuma za mu gudanar da kayan aikin ma'auni na Apache (ab) tare da buƙatun lokaci guda 200 har sai an kammala buƙatun 2000:

# ab -k -c 100 -n 2000 localhost/checkiffileexists.php

Bari mu gudanar da gwajin kuma kwatanta sakamakon. Kula da kididdigar ayyuka:

Kamar yadda kuke gani, aikin uwar garken tare da taron ya fi takwaransa na farko a kowane fanni na wannan gwajin.

Tip #4: Raba RAM cikin hikima don Apache

Wataƙila abu mafi mahimmancin kayan masarufi da za a yi la’akari da shi shine adadin RAM da aka ware don kowane tsari na Apache. Duk da yake ba za ku iya sarrafa wannan kai tsaye ba, kuna iya taƙaita adadin ayyukan yara ta hanyar umarnin MaxRequestWorkers (wanda aka fi sani da MaxClients a Apache 2.2), wanda zai sanya iyaka akan amfani da RAM ta Apache. Hakanan, zaku iya saita wannan ƙimar akan kowane mai masaukin baki ko kowane tushen maƙiyi na kama-da-wane.

Don yin wannan, ya kamata ku lura da matsakaicin adadin RAM da Apache ke amfani da shi, sannan ku ninka shi da adadin MaxRequestWorkers, kuma shine adadin ƙwaƙwalwar da za a keɓe don tafiyar da Apache. Abu daya da baza ku so sabar gidan yanar gizonku yayi shine fara amfani da musanyawa ba, saboda hakan zai rage yawan ayyukansa. Don haka, yakamata koyaushe ku kiyaye amfani da RAM ta Apache a cikin iyakokin da zaku iya bayarwa kuma kada ku dogara da musanyawa dashi.

Misali, toshe mai zuwa zai taƙaita adadin abokan cinikin lokaci guda zuwa 30. Idan ƙarin abokan ciniki sun bugi mai masaukin, za su iya samun jinkiri ko gazawar ɗan lokaci wanda za'a iya samun sauƙin warwarewa ta hanyar sabunta mai binciken. Duk da yake ana iya la'akari da wannan ba a so, yana da lafiya ga uwar garke kuma a cikin dogon lokaci, mafi kyau ga rukunin yanar gizon ku.

Kuna iya sanya wannan toshe a cikin /etc/httpd/conf/httpd.conf ko /etc/apache2/apache2.conf, dangane da ko kana amfani da CentOS ko Debian.

Lura cewa ƙa'ida ɗaya ta shafi duk MPMs - Ina amfani da taron a nan don ci gaba da ra'ayin da aka zayyana a cikin bayanin da ya gabata:

<IfModule mpm_event_module>
    StartServers 3
    MinSpareThreads          25
    MaxSpareThreads          75
    ThreadLimit                      64
    ThreadsPerChild          25
    MaxRequestWorkers    30
    MaxConnectionsPerChild    1000
</IfModule>

A kowane hali, ana ba da shawarar sosai cewa ka koma Apache 2.4 docs don ganin waɗanne umarni aka ba da izinin zaɓin MPM ɗinka.

NASIHA #5: San aikace-aikacen ku

A matsayinka na babban yatsan hannu, bai kamata ka ɗora kowane nau'ikan Apache waɗanda ba a buƙata sosai don aikace-aikacenku yayi aiki ba. Wannan zai buƙaci aƙalla cikakken ilimin aikace-aikacen da ke gudana akan sabar ku, musamman idan kai mai kula da tsarin ne kuma akwai wata ƙungiya mai kula da haɓakawa.

Kuna iya jera abubuwan da aka ɗora a halin yanzu tare da:

# httpd -M          [On RedHat/CentOS based systems]
# apache2ctl -M     [On Debian/Ubuntu based systems]

Don saukewa/musaki kayayyaki a cikin CentOS, kuna buƙatar yin sharhi game da layin da ke farawa da LoadModule (ko dai a cikin babban fayil ɗin sanyi ko a cikin wani taimako a ciki /etc/httpd/conf.modules.d.

A gefe guda, Debian yana ba da kayan aiki da ake kira a2dismod don kashe kayayyaki kuma ana amfani dashi kamar haka:

# a2dismod module_name

Don dawo da shi:

# a2enmod module_name

A kowane hali, tuna sake kunna Apache don canje-canje suyi tasiri.

Takaitawa

A cikin wannan labarin mun sake nazarin shawarwari guda 5 waɗanda za su taimaka muku kunna sabar gidan yanar gizon Apache da haɓaka aikinta. Bugu da ƙari, ya kamata ku tuna cewa haɓakawa da aiki ba tare da tsaro ba su da ma'ana, don haka kuna iya komawa zuwa labarin tukwici mai ƙarfi na Apache a cikin linux-console.net kuma.

Tun da ba za mu iya cika dukkan fannonin wannan batu a cikin wannan labarin ba, wataƙila za ku yi tunanin wasu ra'ayoyin da kuke son rabawa ga sauran jama'a. Idan haka ne, jin kyauta don sanar da mu ta amfani da fam ɗin sharhi a ƙasa.