Saraka ya Nakala
Idadi ya watumiaji wanaotumia seva kwa wakati mmoja haitegemei idadi ya viini vilivyomo, bali ni kiasi gani cha kumbukumbu kinachotumiwa na kila mchakato.
Kauli hii inaweza kusikika kama uchochezi, lakini ni uzoefu halisi na wenye uchungu zaidi katika sekta ya uendeshaji na matengenezo.
Kwa nini kumbukumbu ni kikwazo muhimu?
Watu wengi wanaona VPS yenye CPU ya msingi 8 na kumbukumbu ya 24GB na bila kujua wanafikiri kwamba wanaweza kuendesha mamia ya michakato ya PHP-FPM kwa urahisi.
Hata hivyo, kwa kweli, matumizi ya kumbukumbu ya RSS ya mchakato mmoja wa PHP mara nyingi huwa juu kama 200MB.
Hii ndiyo matokeo yaliyopatikana kupitia majaribio halisi kupitia mstari wa amri:
ps --no-headers -o rss -p $(pgrep php-fpm) | awk '{sum+=$1} END {print sum/NR/1024 " MB"}'
Katika mfumo tata wa HestiaCP na mazingira ya programu-jalizi nyingi, hasa bila uboreshaji wa OPcache, 200MB ndio kawaida.
Hii ina maana kwamba kumbukumbu, si CPU, ndiyo kikomo kikuu kinachoamua kiwango cha juu cha ulinganifu wa sarafu.

Faili ya usanidi inayopendekezwa (php-fpm.conf)
pm = dynamic
pm.max_children = 80
pm.start_servers = 16
pm.min_spare_servers = 8
pm.max_spare_servers = 24
pm.max_requests = 500
pm.process_idle_timeout = 10s
request_terminate_timeout = 60s
Mantiki ya hesabu ya vigezo na msingi wa mpangilio
| Vigezo vya usanidi | Thamani ya kuweka | Hesabu ya msingi na msingi wa usanidi |
|---|---|---|
| pm | dynamic | Hali ya nguvu inaruhusu nyongeza au ufutaji wa michakato kulingana na mahitaji ya sarafu sambamba, kusawazisha kasi ya majibu na matumizi ya kumbukumbu. |
| pm.max_children | 80 | Jumla ya kumbukumbu ya GB 24 ukiondoa kiini cha mfumo na MySQL/RejeaBaada ya Nginx, takriban 16GB husalia kwa PHP.16,384 MB / 200 MB ≈ 81.9Kuiweka hadi 80 kunaweza kuondoa kabisa OOM (Out of Memory) wakati wa ulinganifu mkubwa. |
| seva_za_mwanzo_wa_pm | 16 | Kupasha joto wakati wa kuanzisha kumewekwa mara mbili ya idadi ya viini vya CPU (viini 8 × 2 = 16) ili kuhakikisha kwamba huduma inaweza kushughulikia ulinganifu wa msingi mara moja baada ya kuanzisha upya. |
| seva_za_spare_za_pm.min | 8 | Weka idadi ya msingi ya CPU kwenye viini 8 ili kuhakikisha kwamba maombi mapya yanaweza kujibiwa wakati wowote wakati wa vipindi vya trafiki ndogo. |
| seva_za_spare_za_pm.max | 24 | Iweke mara 3 ya idadi ya viini vya CPU (viini 8 × 3 = 24) ili kuhifadhi idadi ya wastani ya michakato baada ya trafiki kupungua, ili kushughulikia mabadiliko madogo. |
| pm.max_requests | 500 | Ikiwa mchakato mmoja utafikia msingi mkubwa wa 200MB, kupunguza idadi ya maombi hadi 500 kabla ya kuharibu na kujenga upya kunaweza kusafisha uvujaji wa kumbukumbu usio dhahiri haraka zaidi. |
| pm.process_idle_timeout | 10s | 超出 min_spare_servers Michakato isiyofanya kazi huachiliwa kiotomatiki na kurudishwa kwenye kumbukumbu ya mfumo baada ya sekunde 10 bila maombi yoyote. |
Mipangilio Muhimu ya Usaidizi na Mapendekezo ya Uboreshaji
1. Utaratibu wa kuzuia hangover kwa muda uliopangwa
request_terminate_timeout = 60s Hiyo ndiyo ufunguo.
Inaweza kukomesha kwa nguvu michakato ambayo imekwama kutokana na mkwamo wa hifadhidata au uzuiaji wa API ya mtu mwingine.
Wakati huo huo, Nginx's fastcgi_read_timeout Lazima ihifadhiwe kwa angalau sekunde 60, vinginevyo mteja ataipokea mapema. 504 Gateway Timeout.
2. Mikakati ya kushinda vikwazo vya kumbukumbu
Upeo wa michakato 80 kwa wakati mmoja unamaanisha kuwa chini ya hali mbaya ya ulinganifu, mfumo unaweza kushughulikia maombi 80 ya HTTP yanayobadilika kwa wakati mmoja.
Ikiwa unataka kuboresha uwezo zaidi, lengo linapaswa kuwa katika kupunguza matumizi ya kumbukumbu kwa kila mchakato.
- Washa OPcache: ndani
php.iniUsanidi wa wastaniopcache.enable=1naopcache.memory_consumption=256Kuhifadhi kumbukumbu kwa msimbo wa Byte kunaweza kupunguza matumizi ya kumbukumbu ya mchakato mmoja kutoka 200MB hadi 60~100MB. - Udhibiti unaofaa wa kikomo_cha kumbukumbu:将
php.inikatikatimemory_limitImepunguzwa kwa128MAu256MIli kuzuia hati zisizo za kawaida za kibinafsiisiyo na kikomoInatumia kumbukumbu nyingi.
Mara tu matumizi ya kumbukumbu ya mchakato mmoja yanaposhuka hadi 100MB...pm.max_children Inaweza kuboreshwa kwa usalama hadi 150 Kwa kuongezea, uwezo wa sarafu sambamba umeongezeka maradufu.
Mitazamo yenye mamlaka imetajwa
Kulingana na mapendekezo katika nyaraka rasmi za Nginx :
"Programu za FastCGI zinapaswa kufuatiliwa kila wakati kwa maagizo ya muda wa kuisha ili kuzuia uchakavu wa rasilimali."
(Chanzo: Hati za Nginx)
Mwongozo rasmi wa PHP unasema waziwazi:
"pm.max_children hufafanua idadi ya juu zaidi ya michakato ya watoto itakayoundwa. Hii ndiyo agizo muhimu zaidi."
(Chanzo: Nyaraka za PHP-FPM)
Maoni haya yenye mamlaka yanaendana kikamilifu na desturi zetu, ikithibitisha kwamba mantiki ya uboreshaji haitegemei tu uzoefu, bali pia desturi bora sanifu.
Hitimisho: Maoni Yangu na Nukuu Muhimu
Katika hali zenye ulinganifu mkubwa wa sarafu, CPU ni injini, kumbukumbu ni tanki la mafuta, na PHP-FPM ni msambazaji wa meli.
Haijalishi injini ina nguvu kiasi gani, ikiwa tanki la mafuta si kubwa vya kutosha, msafara hautaenda mbali sana.
Wataalamu wa kweli hawatumii vigezo kwa upofu, bali huhesabu kwa usahihi matumizi ya kumbukumbu ya kila mchakato ili kuepuka upotevu na kufurika.
Kiini cha uboreshaji ni kupata usawa bora zaidi na rasilimali chache.
Hii si teknolojia tu, bali pia ni falsafa.
Kwa hivyo, acha kuamini kwamba "idadi ya viini huamua kila kitu." Kinachoamua kikomo cha sarafu sambamba ni udhibiti wako wa kumbukumbu.
Chukua hatua na uboreshe VPS yako kwa uwezo wake kamili, ukinufaika zaidi na kila tone la kumbukumbu.
Tunatumaini, makala "8-core 24GB VPS inaishiwa na kumbukumbu? Urekebishaji wa kina wa mkusanyiko wa michakato ya PHP-FPM chini ya HestiaCP" iliyoshirikiwa kwenye blogu ya Chen Weiliang ( https://www.chenweiliang.com/ ) itakuwa na manufaa kwako.
Jisikie huru kushiriki kiungo cha makala haya: https://www.chenweiliang.com/cwl-34509.html
