Apache2-ի կատարողականի օպտիմալացում

Շատ մարդիկ օգտագործում են apache2-ը որպես վեբ սերվեր: Այնուամենայնիվ, քչերն են մտածում դրա կատարողականի օպտիմալացման մասին, ինչը ուղիղ համեմատականորեն ազդում է կայքի էջերի բեռնման արագության, սցենարների մշակման արագության վրա (մասնավորապես php), ինչպես նաև պրոցեսորի բեռնվածության ավելացման և օգտագործվող RAM-ի քանակի ավելացման վրա:

Այսպիսով, հետևյալ ձեռնարկը պետք է օգնի սկսնակ (և ոչ միայն) օգտվողներին:
Ստորև բերված բոլոր օրինակներն օգտագործվել են Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3 վրա:

Այսպիսով, եկեք սկսենք:

1. Չօգտագործված մոդուլների անջատում

Առաջին մեթոդը պարզապես անջատելն է այն մոդուլները, որոնք դուք չեք օգտագործում.

Ներկայումս օգտագործվող մոդուլների ցանկը կարելի է դիտել հրամանով.

apache2ctl -M

Մոդուլն անջատելու համար օգտագործեք հրամանը.

a2dismod *название модуля*

Համապատասխանաբար, մոդուլը միացնելու համար օգտագործեք հրամանը.

a2enmod *название модуля*

Խնդրում ենք նկատի ունենալ, որ օգտագործելիս a2dismod, մոդուլի անվանումը պետք է գրվի առանց բուն մոդուլ բառի։

Օրինակ, եթե դուք հրամանի ելքում եք apache2ctl -M տեսավ proxy_module, ապա այն անջատելու համար անհրաժեշտ է օգտագործել հրամանը. a2dismod վստահված անձ

Այն մոդուլները, որոնք ամենաշատը բեռնում են համակարգը (անձնական փորձից) հետևյալն են.

  • PHP, Ruby, Perl և այլ մոդուլներ տարբեր սկրիպտային լեզուների համար
  • SSL
  • Վերալիցքավորեք
  • CGI

Այսպիսով, այն դեպքերում, երբ ձեզ հարկավոր չեն այս մոդուլները, խորհուրդ եմ տալիս անջատել այս մոդուլները:

Նաև ցանկացած մոդուլ անջատելուց հետո խորհուրդ եմ տալիս օգտագործել հրամանը. apache2ctl configtest, որը կստուգի օգտագործվող կայքերի կոնֆիգուրացիան, և եթե անջատված մոդուլներից որևէ մեկը նրանց համար անհրաժեշտ էր, ապա դա սխալ կառաջացնի։

2. Փոխել MPM (Բազմաթիվ մշակման մոդուլ) և օգտագործել php-fpm

Լռելյայնորեն, տեղադրումից հետո apache2-ն օգտագործում է MPM Prefork (1 շարանը 1 կապի համար), ինչը զգալիորեն նվազեցնում է կատարողականությունը, բայց միևնույն ժամանակ բարելավում է կայունությունն ու անվտանգությունը։

Բայց կատարողականությունը օպտիմալացնելու համար ես խորհուրդ եմ տալիս օգտագործել MPM Worker-ը, որը թույլ է տալիս օգտագործել մի քանի թելեր մեկ կապի համար:

Այն միացնելու համար մենք օգտագործում ենք հետևյալ հրամանները.

a2dismod mpm_prefork  //Отключаем prefork
a2dismod php7.3  //Отключаем модуль php, который зависит от prefork
a2enmod mpm_worker  //Включаем worker

Այնուամենայնիվ, Worker-ն օգտագործելիս կարող եք խնդրի առաջ կանգնել, քանի որ... php7.3 մոդուլը կախված է Prefork մոդուլից:

Այս խնդիրը լուծելու համար եկեք տեղադրենք php7.3-fpm մոդուլը, որը կօգտագործվի PHP սկրիպտները գործարկելու համար.

apt-get update && apt-get install php7.3-fpm  //Устанавливаем
systemctl enable php7.3-fpm && systemctl start php7.3-fpm  //Добавляем в автозагрузку и запускаем
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf  //Включаем модуль и конфиг для него

Հարկ է նշել, որ php-fpm-ի օգտագործումը նաև կնվազեցնի apache2 պրոցեսի կողմից օգտագործվող RAM-ի քանակը և փոքր-ինչ կարագացնի PHP սկրիպտների մշակումը։

3. Եզրակացություն

Այսպիսով, նման պարզ գործողություններով մենք կարողացանք օպտիմալացնել կատարումը և նվազեցնել մեքենայի բեռը (այս դեպքում RPI3):

Իհարկե, կան հարյուրավոր այլ օպտիմալացման տարբերակներ, ինչպիսիք են սեղմումը միացնելը (ինչն իսկապես օգտակար է, բայց մեծ մասն արդեն միացված է լռելյայնորեն), MPM կարգավորումների (կազմաձևման ֆայլերի) փոփոխությունը, HostnameLookups-ի անջատումը և այլն, բայց այս հոդվածում ես փորձեցի արտացոլում Սրանք այն կետերն են, որոնք ինձ ամենաշատը օգնեցին, և հուսով եմ, որ կօգնեմ մյուսներին:

Source: www.habr.com

Добавить комментарий