लेख निर्देशिका
सर्भरले ह्यान्डल गर्न सक्ने समवर्ती प्रयोगकर्ताहरूको संख्या यसमा कति कोरहरू छन् भन्ने कुरामा निर्भर गर्दैन, तर प्रत्येक प्रक्रियाले कति मेमोरी खपत गर्छ भन्ने कुरामा निर्भर गर्दछ।
यो कथन उत्तेजक जस्तो लाग्न सक्छ, तर यो सञ्चालन र मर्मतसम्भार उद्योगमा सबैभन्दा वास्तविक र पीडादायी अनुभव हो।
किन स्मृति नै प्रमुख बाधा हो?
धेरै मानिसहरूले ८-कोर CPU र २४GB मेमोरी भएको VPS देख्छन् र अवचेतन रूपमा सोच्छन् कि उनीहरूले सयौं PHP-FPM प्रक्रियाहरू सजिलै चलाउन सक्छन्।
यद्यपि, वास्तविकतामा, एकल PHP प्रक्रियाको RSS मेमोरी प्रयोग प्रायः २००MB जति उच्च हुन्छ ।
यो कमाण्ड लाइन मार्फत वास्तविक परीक्षण मार्फत प्राप्त परिणाम हो:
ps --no-headers -o rss -p $(pgrep php-fpm) | awk '{sum+=$1} END {print sum/NR/1024 " MB"}'
HestiaCP को जटिल ढाँचा र बहु-प्लगइन वातावरणमा, विशेष गरी OPcache अप्टिमाइजेसन बिना, २००MB सामान्य हो ।
यसको अर्थ मेमोरी, CPU होइन, अधिकतम कन्करन्सी निर्धारण गर्ने कडा सीमा हो।

सिफारिस गरिएको कन्फिगरेसन फाइल (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
प्यारामिटर गणना तर्क र सेटिङ आधार
| कन्फिगरेसन प्यारामिटरहरू | मान सेट गर्दै | मूल गणना र सेटअप आधार |
|---|---|---|
| pm | dynamic | गतिशील मोडले समवर्ती आवश्यकताहरूको आधारमा प्रक्रियाहरूको लोचदार थप वा मेटाउन अनुमति दिन्छ, प्रतिक्रिया गति र मेमोरी उपयोग सन्तुलनमा राख्छ। |
| pm.max_children | 80 | २४ जीबी कुल मेमोरी माइनस सिस्टम कर्नेल र MySQL/RedisNginx पछि, PHP को लागि लगभग १६GB बाँकी रहन्छ।16,384 MB / 200 MB ≈ 81.9यसलाई ८० मा सेट गर्नाले उच्च कन्करन्सीको समयमा OOM (मेमोरी बाहिर) पूर्ण रूपमा हटाउन सकिन्छ। |
| pm.start_servers मा जानुहोस् | 16 | सेवाले पुन: सुरु गरेपछि तुरुन्तै आधारभूत कन्करन्सी ह्यान्डल गर्न सकोस् भनेर सुनिश्चित गर्न स्टार्टअपमा प्रिहिटिंगलाई CPU कोरहरूको संख्या (८ कोर × २ = १६) को दोब्बरमा सेट गरिएको छ। |
| pm.min_spare_servers मा | 8 | कम ट्राफिक अवधिमा कुनै पनि समयमा नयाँ अनुरोधहरूको जवाफ दिन सकिन्छ भनेर सुनिश्चित गर्न CPU कोर गणनालाई ८ कोरमा सेट गर्नुहोस्। |
| pm.max_spare_servers मा जानुहोस् | 24 | ट्राफिक घटेपछि पनि मध्यम संख्यामा प्रक्रियाहरू कायम राख्न, हल्का उतारचढावहरू ह्यान्डल गर्न यसलाई CPU कोरहरूको संख्याको ३ गुणा (८ कोर × ३ = २४) मा सेट गर्नुहोस्। |
| pm.max_requests | 500 | यदि एउटै प्रक्रिया २०० एमबीको ठूलो आधारमा पुग्यो भने, अनुरोधहरूको संख्या ५०० मा घटाउँदा प्रक्रिया नष्ट हुनेछ र पुनर्निर्माण हुनेछ, जसले निहित मेमोरी चुहावटलाई छिटो सफा गर्न सक्छ। |
| pm.process_idle_timeout | 10s | 超出 min_spare_servers कुनै अनुरोध नभएको १० सेकेन्ड पछि निष्क्रिय प्रक्रियाहरू स्वचालित रूपमा रिलिज हुन्छन् र प्रणाली मेमोरीमा फर्किन्छन्। |
आवश्यक समर्थन सेटिङहरू र अनुकूलन सुझावहरू
१. टाइमआउट एन्टी-ह्याङ्गओभर संयन्त्र
request_terminate_timeout = 60s त्यो चाबी हो।
यसले डाटाबेस गतिरोध वा तेस्रो-पक्ष API अवरुद्धको कारणले अड्किएका प्रक्रियाहरूलाई जबरजस्ती समाप्त गर्न सक्छ।
यसैबीच, Nginx को fastcgi_read_timeout यसलाई कम्तिमा ६० सेकेन्डसम्म राख्नुपर्छ, अन्यथा ग्राहकले समयभन्दा पहिले नै प्राप्त गर्नेछ। 504 Gateway Timeout।
२. स्मरणशक्तिमा आउने समस्याहरू पार गर्ने रणनीतिहरू
अधिकतम ८० समवर्ती प्रक्रियाहरूको अर्थ चरम समवर्ती अवस्थाहरूमा, प्रणालीले एकै साथ अधिकतम ८० गतिशील HTTP अनुरोधहरू ह्यान्डल गर्न सक्छ।
यदि तपाईं क्षमतालाई अझ सुधार गर्न चाहनुहुन्छ भने, प्रति प्रक्रिया मेमोरी प्रयोग घटाउने कुरामा ध्यान केन्द्रित गर्नुपर्छ।
- OPcache सक्षम पार्नुहोस्: अवस्थित
php.iniमध्यम कन्फिगरेसनopcache.enable=1रopcache.memory_consumption=256बाइटकोड क्यासिङले एकल प्रक्रियाको मेमोरी प्रयोगलाई २०० एमबीबाट ६० ~ १०० एमबीमा घटाउन सक्छ। - memory_limit को उचित नियन्त्रण:将
php.iniमध्यmemory_limitसीमित128Mवा256Mव्यक्तिगत असामान्य लिपिहरू रोक्नको लागिअसीमितयसले धेरै मेमोरी खपत गर्छ।
एक पटक एउटा प्रक्रियाको मेमोरी प्रयोग १०० एमबीमा झर्दा...pm.max_children यसलाई सुरक्षित रूपमा अपग्रेड गर्न सकिन्छ 150 यसको अतिरिक्त, समवर्ती क्षमता लगभग दोब्बर भएको छ।
आधिकारिक दृष्टिकोण उद्धृत गरियो
आधिकारिक Nginx कागजातमा सिफारिसहरू अनुसार :
"स्रोतको थकान रोक्नको लागि FastCGI अनुप्रयोगहरूलाई सधैं टाइमआउट निर्देशनहरू सहित निगरानी गर्नुपर्छ।"
(स्रोत: Nginx कागजातहरू)
आधिकारिक PHP म्यानुअलले स्पष्ट रूपमा भन्छ:
"pm.max_children ले सिर्जना गरिने चाइल्ड प्रक्रियाहरूको अधिकतम संख्या परिभाषित गर्दछ। यो सबैभन्दा महत्त्वपूर्ण निर्देशन हो।"
(स्रोत: PHP-FPM कागजात)
यी आधिकारिक विचारहरू हाम्रा अभ्यासहरूसँग पूर्ण रूपमा मिल्दोजुल्दो छन्, जसले प्रमाणित गर्दछ कि अनुकूलन तर्क केवल अनुभवमा आधारित छैन, तर मानकीकृत उत्तम अभ्यासहरूमा पनि आधारित छ।
निष्कर्ष: मेरा दृष्टिकोण र मुख्य उद्धरणहरू
उच्च-सहमति परिदृश्यहरूमा, CPU इन्जिन हो, मेमोरी इन्धन ट्याङ्की हो, र PHP-FPM फ्लीट डिस्प्याचर हो।
इन्जिन जतिसुकै शक्तिशाली किन नहोस्, यदि इन्धन ट्याङ्की पर्याप्त ठूलो छैन भने, काफिले धेरै टाढा जान सक्दैन।
साँचो विज्ञहरूले आँखा चिम्लेर प्यारामिटरहरूलाई अधिकतम गर्दैनन्, बरु फोहोर र ओभरफ्लो दुवैबाट बच्न प्रत्येक प्रक्रियाको मेमोरी प्रयोगको सटीक गणना गर्छन्।
अनुकूलनको सार भनेको सीमित स्रोतसाधनको साथ इष्टतम सन्तुलन खोज्नु हो।
यो केवल प्रविधि मात्र होइन, दर्शन पनि हो ।
त्यसकारण, "कोरहरूको संख्याले सबै कुरा निर्धारण गर्छ" भन्ने विश्वास गर्न बन्द गर्नुहोस्। समवर्ती सीमा वास्तवमा निर्धारण गर्ने कुरा भनेको मेमोरीमाथिको तपाईंको नियन्त्रण हो।
मेमोरीको प्रत्येक थोपाको अधिकतम उपयोग गर्दै, कार्य गर्नुहोस् र आफ्नो VPS लाई यसको पूर्ण क्षमतामा अनुकूलन गर्नुहोस्।
आशा छ, चेन वेइलियाङको ब्लग ( https://www.chenweiliang.com/ ) मा साझा गरिएको "८-कोर २४GB VPS मेमोरी सकिएको छ? HestiaCP अन्तर्गत PHP-FPM प्रक्रिया पूलको चरम ट्युनिङ" लेख तपाईंको लागि उपयोगी हुनेछ।
यस लेखको लिङ्क साझा गर्न नहिचकिचाउनुहोस्: https://www.chenweiliang.com/cwl-34509.html
