APC-ի կարգավորում։ Քեշավորում php-ում։
!!! Նկարագրություն !!! Մի օգտագործեք apc, եթե ձեր PHP-ն ունի 5.5 կամ ավելի բարձր տարբերակ, OPCache-ն փոխարինում է apc-ն և ներառված է PHP-ում:
2013 թվականի մարտի 21-ին, PHP 5.5 beta 1-ն թողարկվեց՝ ներառելով "Zend OPCache"՝ սա կարծես կլիներ APC-ի փոխարինիչը, քանի որ այն ներառված է PHP core-ում և պետք է պահպանվի յուրաքանչյուր նոր թողարկման համար:
APC՝ PHP-ի այլընտրանքային քեշն է, որը գրում է գործողության կոդը PHP-ի քեշում, կամ ինչպես նկարագրում են ծրագրավորողները՝ "APC-ն ազատ, բաց կոդով և հուսալի համակարգ է PHP միջին կոդի քեշավորման և օպտիմիզացման համար":
PHP-ն բարձր մակարդակի լեզու է: Ինչպես բոլոր բարձր մակարդակի լեզուները, այն կարող է հավաքվել տարբեր պլատֆորմներում: Կոնտենտի կառավարման համակարգերը, ինչպիսին է Drupal-ը, կազմված են հարյուրավոր, եթե ոչ հազարավոր PHP սցենարներից, և այդ համակարգերի մոդուլային բնույթը նշանակում է, որ յուրաքանչյուր էջի բեռնման ժամանակ կարելի է օգտագործել այդ սցենարների հարյուրավորները: Հայտնի լեզուներից տարբերվելով՝ PHP-ն աշխատում է «վրաերթով», այսինքն՝ սցենարը իրականացնում է իր բայթ կոդը այն ժամանակ, երբ այն աշխատում է: Ահա այստեղ է որ APC-ն գալիս է օգնության՝ APC-ն կարող է պահել հավաքված սցենարի պատճենը հիշողության մեջ, որպեսզի պատրաստ լինի օգտագործման, ինչը էապես նվազեցնում է այն ռեսուրսները, որոնք պահանջվում են Drupal-ի համար: (Նշենք, որ որոշ լեզուներում սա արվում է ավտոմատ՝ Python սցենարները Apache սերվերի վրա փոխանցվում են Python մեկնաբանիչին, թողնելով հավաքված տարբերակը մոտեցած մոտակայքում՝ տվյալ սցենարից, որը վեբ սերվերը կօգտագործի ապագա մուտքերի համար):
Անկախ կոշտ հարմարեցումից՝ APC-ն շատ հեշտ է կարգավորվում: Նախ պետք է այն տեղադրել:
sudo apt-get install php-pear
sudo apt-get install php5-dev apache2-prefork-dev build-essential
sudo pecl install apc
Հիմա պետք է պատճենեք apc.php ֆայլը, որը կցել եմ դասընթացին, տեղադրեք այն սերվերում, հետո վերագործարկեք Apache-ը:
sudo /etc/init.d/apache2 restart
Հիմա կարող եք բացել http://test/apc.php ֆայլը և տեսնել APC-ի վիճակագրությունը:
Դա կբերի մոտավորապես այս վիճակագրությունը: Ինչպես տեսնում եք՝ գրաֆիկները չեն շատ լավ վիճակում: Քեշում ֆայլերի բացակայության (MISS) շատ մեծ քանակություն և քեշում ֆայլերի առկայության (HITS) փոքր քանակություն: APC-ի հիշողության ֆրագմենտացիան նույնպես բարձր է: Այս ամենը վկայում է APC-ի անարդյունավետ օգտագործման մասին: Ինչու՞ դա տեղի է ունենում:
Հիշողություն չի բավարարում: Եթե APC-ի համար 8 ՄԲ կա, իսկ բեռնարարկան ֆայլերի չափը 12 ՄԲ է, ապա ձեզ բավարար չի լինի 8 ՄԲ՝ այդ ֆայլերի համար, ինչը առաջացնում է նոր MISS-ներ:
Ֆրագմենտացիա: Հնարավոր է, որ APC-ի հիշողության չափը 32 ՄԲ է, բայց ֆայլերի քանակը 40 ՄԲ: Բայց ոչ բոլոր ֆայլերը միշտ օգտագործվում են: Օրինակ՝ որոշ մոդուլները բեռնվում են ժամանակ առ ժամանակ և հազվադեպ օգտագործվում են: Այդպես կարող է պատահել, որ APC-ի կարգավորմամբ այդ ֆայլերը կմնան քեշում, երբ ակտիվ ֆայլերը պահանջում են քեշում: Ֆայլերն ավելացվում են քեշում միշտ չէ, որ խմբերով: Պահանջվող մեծ ֆայլը կարող է երկու մասի բաժանվել, և արդյունքում հիշողության մեջ տեղերը կսպառվեն:
Բայց սկսենք APC-ի կոնֆիգուրացիոն պարամետրերի հետ. Debian/Ubuntu-ում APC-ի կոնֆիգուրացիոն ֆայլը գտնվում է /etc/php5/conf.d/apc.ini տեղում:
apc.enabled=1
APC- ն ակտիվացված է: Սա պարզ կարգավորում է, բայց շատ կարևոր: APC-ի անջատումը կարող է հանգեցնել գործառնական տարածքի նվազմանը արտադրական սերվերում:
apc.shm_segments=1
apc.shm_size=32
Այս կարգավորումները ցույց են տալիս, թե որքան հիշողություն հատկացվում APC-ին: apc.shm_segments=1 ցույց է տալիս, որ մեկ հատված հիշողություն է հատկացվում, իսկ apc.shm_size=32 ցույց է տալիս, որ այս հատվածի չափը 32 ՄԲ է: Կարող եք փոփոխել հատվածի չափը, ասենք՝ 64 ՄԲ, և վերագործարկեք Apache-ը: Երբ MISS-ների քանակը կպառկվի 1%-ի սահմաններում, կարող եք նվազեցնել չափը՝ 128 ՄԲ և այլն: Ես կարծում եմ՝ սա հիմնական պարամետր է APC-ի հետ աշխատելու համար:
apc.cache_by_default=1
;apc.filters=
APC-ի աշխատանքը բոլոր PHP սցենարների համար: Կարող ենք նաև մեկնաբանել apc.filters-ի տողը:
apc.cache_by_default=0
apc.filters="+drupal6"
Այսպիսով՝ մենք կարող ենք սահմանափակել APC-ի օգտագործումը միայն Drupal 6-ի ֆայլերի համար: Սա կարևոր է, երբ մենք չենք ցանկանում կորցնել քեշը ամեն անգամ, երբ օգտագործում ենք PhpMyAdmin-ն սերվերում:
apc.stat=1
Այս պարամետրը ուղղակիորեն ազդում է կատարողականի վրա: Երբ պարամետրը միացված է, APC-ում պահվում է քեշը մինչև այն չի ջնջվում: Երբ պարամետրը անջատված է, APC-ն համեմատում է սցենարի կատարումային ժամանակը և վերջին փոփոխված ժամանակը՝ նոր տարբերակը քեշելու համար: Այս պարամետրը անհրաժեշտ է արտադրական սերվերում, բայց ծրագրավորման համար այս պարամետրը խորհուրդ է տրվում անջատել: Եվ դեռ՝ apc.stat պարամետրով անհրաժեշտ է դատարկել APC-ի քեշը՝ մոդուլներ և Drupal-ի kernel-ի թարմացումից հետո.
apc.ttl=0
Այս կարգավորումը ցույց է տալիս, թե քանի միլիսեկունդից պետք է դատարկվի քեշը: Երբ արժեքը 0 է, քեշը չի դատարկվում: Հետևաբար՝ մենք դնում ենք 0, որովհետև չենք ուզում, որ յուրաքանչյուր ժամվա ընթացքում մեզ համար անհրաժեշտ քեշը դատարկվի (դեֆոլտ արժեքը՝ 7200, այսինքն՝ 2 ժամ):
apc.rfc1867=1
apc.num_files_hint=2048
Կարգավորումների փոփոխությունից հետո, մի մոռացեք վերագործարկել սերվերը: Արդյունքում դուք պետք է ունենաք այսպիսի գրաֆիկներ:
Նշեք, որ MISS-ի քանակը պետք է մոտենա զրոյին, իսկ ֆրագմենտացիան 0%-ի սահմաններում լինի: