Ndụmọdụ 5 iji kwalite arụmọrụ nke sava weebụ Apache gị


Dị ka akụkọ Netcraft mere n'oge na-adịbeghị anya (ụlọ ọrụ ịntanetị a ma ama nke na-enye n'etiti ọrụ ndị ọzọ ọnụ ọgụgụ ojiji ihe nchọgharị weebụ), Apache na-aga n'ihu na-abụ ihe nkesa weebụ a na-ejikarị eme ihe n'etiti saịtị na kọmputa na-eche Ịntanetị ihu.

Na mgbakwunye, Apache na-aga n'ihu na-enwe uto kachasị n'etiti sava weebụ kachasị, Nginx na IIS sochiri ya. Ya mere, ọ bụrụ na ị bụ onye nchịkwa sistemụ na-ahụ maka ijikwa nrụnye Apache, ịkwesịrị ịma ka ị ga-esi jide n'aka na sava weebụ gị na-arụ ọrụ kacha mma dịka mkpa gị (ma ọ bụ onye ahịa gị).

N'isiokwu a, anyị ga-atụle ndụmọdụ ole na ole ga-enyere gị aka hụ na Apache ga-agba ọsọ nke ọma ma nwee ike ijikwa ọnụ ọgụgụ nke arịrịọ ị na-atụ anya n'aka ndị ahịa dịpụrụ adịpụ.

Otú ọ dị, biko buru n'uche na emeghị Apache na ebumnobi ịtọọ ndekọ ndekọ - mana, n'agbanyeghị nke ahụ, ọ ka nwere ike ịnye arụmọrụ dị elu n'ihe fọrọ nke nta ka ọ bụrụ ihe ọ bụla eji eme ihe ị nwere ike iche.

NDỤMỌDỤ #1: Na-emelite Apache mgbe niile ka ọ bụrụ ụdị ọhụrụ ya

Ọ na-aga n'ekwughị na ịnwe ụdị Apache kachasị ọhụrụ arụnyere nwere ike ịbụ otu n'ime ihe mbụ ị kwesịrị ịtụle. Dịka nke Nọvemba 19, 2015, ụdị Apache kachasị ọhụrụ dị na ebe nchekwa CentOS 7 bụ 2.4.6, ebe na Debian's bụ 2.4.10.

Agbanyeghị, enwere ike ịnwe nkwalite na nso nso a ma ọ bụ ndozi nke agbakwunyere na ụdị kwụsiri ike ewepụtara ọhụrụ, nke emeziri ka enwere nbudata na wụnye site na isi mmalite. A na-enyekwa ntụziaka nchịkọta na nwụnye ebe a - naanị cheta na ọ bụrụ na ịhọrọ usoro mmelite a, ị nwere ike ịkwado faịlụ nhazi/saịtị/ndị ọbịa gị ugbu a ka ịkpachara anya.

N'ọnọdụ ọ bụla, ịnwere ike ịlele ụdị arụnyere gị ugbu a dị ka ndị a:

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

Dị ka usoro isi mkpịsị aka, jidesie usoro mmelite nke onye njikwa ngwugwu nyere nkesa gị (yum update httpdma ọ bụ aptitude safe-upgrade apache2, maka CentOS ma ọ bụ Debian, otu) ma ọ bụrụ na ọ dịghị ụzọ ọzọ. Ị nwere ike ịgụ ndetu mwepụta ọhụrụ na ngalaba Apache Documentation na webụsaịtị HTTP sava Apache.

NDỤMỌDỤ #2: Ọ bụrụ na ị na-eji kernel toro karịa 2.4, tụlee ịkwalite ugbu a

Gịnị kpatara? Ụdị kernel 2.4 na n'elu nwere oku sistemu kernel sendfile na ndabara nyere ya aka. Nke ahụ, n'aka nke ya, na-eme ka ịnyefe faịlụ netwọk dị elu (nke a na-achọsi ike n'ọnọdụ nke nkwukọrịta ndị ahịa weebụ) ma na-enyere Apache aka ịnapụta ọdịnaya static ngwa ngwa yana iji CPU dị ala site n'ịrụ ọrụ na-agụ na izipu n'otu oge.

Ị nwere ike ịlele kernel gị arụnyere ugbu a site na:

# uname -r

ma were ya tụnyere kernel kwụsiri ike kachasị ọhụrụ na www.kernel.org (4.3 n'oge edere).

Ọ bụ ezie na ọ bụ usoro echereghị maka ndị mbido, ịkwalite kernel gị bụ mmega ahụ na-atọ ụtọ iji mụtakwuo banyere internals nke Linux.

NDỤMỌDỤ #3: Họrọ Multi-Processing Module (MPM) nke na-arụ ọrụ kacha mma maka ikpe gị

Na omume, MPM na-agbatị ọrụ modul nke Apache site n'ikwe ka ị kpebie ka esi ahazi sava weebụ iji jikọta na ọdụ ụgbọ mmiri na igwe, nabata arịrịọ sitere n'aka ndị ahịa, na iji usoro ụmụaka (na eri, ọzọ) iji dozie arịrịọ ndị dị otú ahụ.

Malite na ụdị 2.4, Apache na-enye MPM atọ dị iche iche ịhọrọ site na, dabere na mkpa gị:

  1. The prefork MPM na-eji ọtụtụ usoro ụmụaka na-enweghị eri. Usoro ọ bụla na-ejikwa otu njikọ n'otu oge na-emepụtaghị eri dị iche iche maka nke ọ bụla. Na-abanyeghị oke nkọwa, anyị nwere ike ịsị na ị ga-achọ iji MPM a naanị mgbe ị na-emezigharị ngwa na-eji, ma ọ bụ ọ bụrụ na ngwa gị kwesịrị ijikọ, modul na-enweghị eriri dị ka mod_php.
  2. The onye ọrụ MPM na-eji ọtụtụ eri eme kwa nwa, ebe eri ọ bụla na-ejikwa otu njikọ n'otu oge. Nke a bụ nhọrọ dị mma maka sava ndị nwere nnukwu okporo ụzọ ebe ọ na-enye ohere iji obere RAM na-ejikwa njikọ ndị ọzọ na-emekọ ọnụ karịa ka ọ dị na mbụ.
  3. N'ikpeazụ, mmemme MPM bụ ndabara MPM n'ọtụtụ nrụnye Apache maka ụdị 2.4 na karịa. Ọ dị ka onye ọrụ MPM n'ihi na ọ na-emepụta ọtụtụ eriri maka usoro nwatakịrị ma na-eji uru: ọ na-eme ka KeepAlive ma ọ bụ njikọ na-adịghị arụ ọrụ (mgbe ha na-anọgide na steeti ahụ) na-edozi site na otu eri, si otú ahụ na-ahapụ ebe nchekwa nke nwere ike. ka ekenye ya na eri ndị ọzọ. MPM a adabaghị maka iji modul na-enweghị eriri dị ka mod_php, nke a ga-eji dochie ụdị PHP-FPM dị otú ahụ kama.

Iji lelee MPM nke nrụnye Apache gị ji, ị nwere ike ime:

# httpd -V

Foto dị n'okpuru na-egosi na sava weebụ a na-eji prefork MPM.

Iji gbanwee nke a, ị ga-achọ idezi:

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

Ebe nwere ike ịbụ mpm_event, mpm_worker, ma ọ bụ mpm_prefork.

ma mebie ahịrị na-ebu modul achọrọ dị ka nke a:

LoadModule mpm_event_module modules/mod_mpm_event.so

Mara: Iji mee ka mmemme MPM rụọ ọrụ na Debian, ị nwere ike ịwụnye ngwungwu libapache2-mod-fastcgi site na ebe nchekwa anaghị akwụ ụgwọ.

Na mgbakwunye, maka CentOS ị ga-achọ php-fpm (yana fcgi na mod_fcgid) ebe na Debian a na-akpọ ya php5-fpm (yana apache2-mpm-event).

N'ikpeazụ, ma ọ dịghị ihe ọzọ, malitegharịa sava weebụ yana ọrụ php-fpm (ma ọ bụ php5-fpm) arụnyere ọhụrụ:

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

Ọ bụ ezie na ị nwere ike ịtọ Apache ka ọ jiri otu MPM, nhazi ahụ nwere ike ịkagbu na ntọala onye ọbịa ọ bụla n'otu ụdị dị ka egosiri na mbụ.

Naanị tinye mkpado kwekọrọ na faịlụ nhazi maka onye ọ bụla mebere onye ọbịa ma ị dịla njikere ịga - mana jide n'aka na ị na-eji otu MPM na vhost.

N'ikpeazụ, biko mara na n'agbanyeghị nkesa ị họọrọ, php-fpm na-adabere na mmejuputa FastCGI, nke mere m ji akwado nrụnye ngwugwu ndị ọzọ na mbụ.

Maka nkọwa ndị ọzọ na ihe atụ na php-fpm yana otu ọ nwere ike isi na mmemme MPM mụbaa arụmọrụ nke Apache, ị ga-ezo aka na akwụkwọ gọọmentị.

Nke a bụ ihe m na-ahụ mgbe m gbanwere MPM ndabara site na prefork gaa na mmemme n'otu igbe egosiri na foto gara aga:

Na CentOS 7, ị ga-achọ ijide n'aka na enyere ọrụ http na https site na firewall, yana na agbakwunyere netwọk netwọk (s) nke ọma na mpaghara ndabara.

Ọmụmaatụ:

# 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

Ihe kpatara m ji ebute nke a bụ n'ihi na enwere m nsogbu n'oge na-adịbeghị anya ebe ntọala ntọala firewalld ndabara na igwe ojii VPS gbochiri php-fpm na Apache site na nhazi faịlụ php.

Dị ka ule bụ isi (Eji m n'aka na ị nwere ike iche echiche nke mgbagwoju anya ma ọ bụ nrụgide), m ga-emepụta faịlụ php nke na-enyocha ịdị adị nke faịlụ ọzọ aha ya bụ test.php n'otu akwụkwọ ndekọ nke CentOS abụọ. Sava 7 nwere otu njirimara ngwaike yana ibu mana nwere MPM dị iche iche. Otu n'ime ha ga-eji mmemme na nke ọzọ ga-eji prefork:

Nke a bụ koodu php nke m debere na faịlụ akpọrọ checkiffileexists.php:

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

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

Mgbe ahụ, anyị ga-eji ngwa ọrụ benchmark Apache (ab) mee arịrịọ 200 n'otu oge ruo mgbe arịrịọ 2000 mezuru:

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

Ka anyị gba ọsọ ule wee tụnyere nsonaazụ. Lezienụ anya na ọnụ ọgụgụ arụmọrụ:

Dị ka ị na-ahụ, arụmọrụ nke ihe nkesa na omume dị nnọọ elu karịa prefork ibe ya n'akụkụ ọ bụla nke ule a.

NDỤMỌDỤ # 4: Kesaa RAM nke ọma maka Apache

Ikekwe ihe ngwaike kachasị dị mkpa a ga-eburu n'uche bụ ọnụọgụ RAM ekenyere maka usoro Apache ọ bụla. Ọ bụ ezie na ịnweghị ike ijikwa nke a ozugbo, ị nwere ike igbochi ọnụ ọgụgụ nke usoro ụmụaka site na ntuziaka MaxRequestWorkers (nke a na-akpọbu MaxClients na Apache 2.2), nke ga-etinye oke na ojiji RAM nke Apache. Ọzọ, ị nwere ike ịtọ uru a na onye ọbịa ọ bụla ma ọ bụ ntọala nnabata mebere.

Iji mee nke a, ị kwesịrị ị rịba ama nkezi ego RAM nke Apache na-eji, wee mụbaa ya site na ọnụ ọgụgụ MaxRequestWorkers, na nke ahụ bụ ego nchekwa nke a ga-ekenye maka usoro Apache. Otu ihe ị na-achọghị ka sava weebụ gị mee bụ ịmalite iji swap, n'ihi na nke ahụ ga-ebelata ọrụ ya nke ukwuu. Yabụ, ị ga-edobe ojiji nke RAM site na Apache mgbe niile n'ime oke ị nwere ike imeli na adabereghị na mgbanwe maka ya.

Dịka ọmụmaatụ, ngọngọ na-esote ga-amachibido ọnụ ọgụgụ ndị ahịa n'otu oge na 30. Ọ bụrụ na ọtụtụ ndị ahịa kụrụ onye ọbịa ahụ, ha nwere ike ịnweta igbu oge ma ọ bụ ọdịda nwa oge nke enwere ike idozi ngwa ngwa site na ịmegharị ihe nchọgharị ahụ. Ọ bụ ezie na nke a nwere ike iwere na ọ dịghị mma, ọ dị mma maka ihe nkesa na n'ikpeazụ, kacha mma maka saịtị gị.

Ị nwere ike idowe ngọngọ a n'ime /etc/httpd/conf/httpd.conf ma ọ bụ /etc/apache2/apache2.conf, dabere ma ị na-eji CentOS ma ọ bụ Debian.

Biko mara na otu ụkpụrụ ahụ na-emetụta MPM niile - Ana m eji mmemme ebe a gaa n'ihu n'echiche akọwapụtara na ntụzịaka gara aga:

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

N'ọnọdụ ọ bụla, a na-atụ aro ka ị rụtụ aka na docs Apache 2.4 iji hụ ntuziaka anabatara maka MPM ị họọrọ.

NDỤMỌDỤ #5: Mara ngwa gị

Dị ka usoro isi mkpịsị aka, ịkwesighi ịkwanye modul Apache ọ bụla na-adịghị mkpa ka ngwa gị rụọ ọrụ. Nke a ga-achọ ma ọ dịkarịa ala ihe ọmụma n'ozuzu nke ngwa ndị na-agba ọsọ na ihe nkesa gị, karịsịa ma ọ bụrụ na ị bụ onye nchịkwa sistemu na enwere otu ọzọ na-ahụ maka mmepe.

Ị nwere ike iji:

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

Iji budata/gbanyụọ modul na CentOS, ị ga-achọ ikwupụta ahịrị na-amalite na LoadModule (ma na faịlụ nhazi isi ma ọ bụ na enyemaka n'ime /etc/httpd/conf.modules.d.

N'aka nke ọzọ, Debian na-enye ngwá ọrụ a na-akpọ a2dismod iji gbanyụọ modul ma jiri ya dị ka ndị a:

# a2dismod module_name

Iji mee ka ọ laghachi azụ:

# a2enmod module_name

N'ọnọdụ ọ bụla, cheta ịmalitegharịa Apache maka mgbanwe ndị a ga-arụ ọrụ.

Nchịkọta

N'isiokwu a, anyị enyochala ndụmọdụ 5 ga-enyere gị aka imezi ihe nkesa weebụ Apache ma mụbaa arụmọrụ ya. Na mgbakwunye, ị kwesịrị icheta na njikarịcha na arụmọrụ na-enweghị nchekwa enweghị isi, yabụ ị nwere ike ịtu aka na isiokwu ndụmọdụ siri ike Apache na linux-console.net.

Ebe ọ bụ na anyị enweghị ike ịkọwa akụkụ niile nke isiokwu a nke ọma n'isiokwu a, ikekwe ị ga-eche echiche ndị ọzọ ị ga-achọ ịkọrọ ndị obodo ọzọ. Ọ bụrụ otú ahụ, nweere onwe gị ka anyị mara site na iji ụdị nkọwa n'okpuru.