लेख निर्देशिका
- 1 PHP-FPM ओभरलोड हुनुको मुख्य कारण
- 2 PHP-FPM प्रक्रिया पूल अनुकूलन (कोर प्यारामिटर समायोजन)
- 3 कुनै पनि समयमा प्रगति ट्र्याक राख्न PHP-FPM स्थिति अनुगमन सक्षम गर्नुहोस्।
- 4 समस्याहरूको द्रुत निवारण गर्न PHP-FPM लगहरू अप्टिमाइज गर्नुहोस्
- 5 मेमोरी चुहावट रोक्नको लागि नियमित रूपमा PHP-FPM पुन: सुरु गर्नुहोस्
- 6 समस्या रहिरह्यो भने के हुन्छ? थप अनुकूलन!
- 7 सारांश: PHP-FPM अप्टिमाइज गर्नुहोस् र वेबसाइट अब क्र्यास हुनेछैन!
के तपाईंले कहिल्यै यस्तो अवस्थाको सामना गर्नुभएको छ?वेबसाइट पहुँच अचानक सुस्त भयो, वा ५०० त्रुटि पनि भयो। PHP-FPM पुन: सुरु गरेपछि, यो सामान्यमा फर्कियो।, तर समस्या केही समय पछि फेरि देखा पर्छ? यो एकदमै निराशाजनक छ!
किन यस्तो भइरहेको छ?वास्तवमा, यो सामान्यतयाPHP-FPM प्रक्रिया पूल राम्रोसँग कन्फिगर गरिएको छैन, वा सर्भर स्रोतहरू अपर्याप्त छन्।कारणले गर्दा। आज, हामी पूर्ण रूपमा अनुकूलन गर्नेछौं HestiaCP PHP-FPM स्थापनाले वेबसाइटलाई चट्टान जस्तै स्थिर बनाउँछ!
PHP-FPM ओभरलोड हुनुको मुख्य कारण
PHP-FPM एक होप्रक्रिया प्रबन्धक, जुन गतिशील अनुरोधहरू ह्यान्डल गर्ने जिम्मेवारी हो। यदि कन्फिगरेसन उचित छैन भने, यसले निम्त्याउन सक्छ:
- सर्भर स्रोतहरू सकिएका छन्।, जसले गर्दा PHP-FPM ले समयमै नयाँ अनुरोधहरूको जवाफ दिन असमर्थ हुन्छ;
- धेरै कम प्रक्रियाहरू, जब ट्राफिक अचानक बढ्छ, यसलाई समयमै प्रशोधन गर्न सकिँदैन;
- प्रक्रियाको प्रयोग धेरै उच्च छ, जसले गर्दा CPU लोड विस्फोट हुन्छ।

PHP-FPM ओभरलोड भएको कसरी थाहा पाउने?
प्रयोग गर्न सक्छ top वा htop CPU र मेमोरी उपयोग हेर्नको लागि आदेश:
top -c
यदि तपाईंले निम्न जस्तै प्रक्रिया जानकारी देख्नुभयो भने, यसको अर्थ PHP-FPM उच्च लोडमा चलिरहेको छ:
1669293 abc 20 0 790284 227880 185568 R 73.1 0.9 1:30.09 php-fpm: pool chenweiliang.com
1669522 abc 20 0 801924 224224 170236 R 69.9 0.9 0:59.01 php-fpm: pool chenweiliang.com
हेर्नुहोस् कसरी यी प्रक्रियाहरूले CPU को ७०% भन्दा बढी ओगटेका छन्? यदि यो बारम्बार हुन्छ भने, तपाईंको PHP-FPM समस्या हुनुपर्छ।!
त्यसो भए, हामी कसरी PHP-FPM कन्फिगरेसनलाई अप्टिमाइज गर्न सक्छौं ताकि सर्भर अब ओभरलोड नहोस्?
PHP-FPM प्रक्रिया पूल अनुकूलन (कोर प्यारामिटर समायोजन)
पहिले, खोल्नुहोस् php-fpm कन्फिगरेसन फाइलहरू:
sudo nano /etc/php/*/fpm/pool.d/www.conf- *आफ्नो PHP संस्करण, जस्तै PHP8.3 मा परिवर्तन गर्नुहोस्, र यसलाई यसमा परिवर्तन गर्नुहोस्:
/etc/php/8.3/fpm/pool.d/www.conf
HestiaCP द्वारा सेट गरिएको PHP संस्करण क्वेरी गर्नुहोस्
v-list-web-domain user domain.com
उदाहरण:
v-list-web-domain abc chenweiliang.com
आउटपुटमा, तपाईंले यस्तो केहि देख्नुहुनेछ:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
यसको अर्थ वेबसाइटले प्रयोग गर्दछ PHP 8.3।
तपाईंको PHP-FPM कन्फिगरेसन हेरौं:
[chenweiliang.com]
listen = /run/php/php8.3-fpm-chenweiliang.com.sock
listen.owner = abc
listen.group = www-data
listen.mode = 0660
user = abc
group = abc
pm = ondemand
pm.max_children = 8
pm.max_requests = 4000
pm.process_idle_timeout = 10s
तपाईंले देख्न सक्नुहुन्छ कि तपाईंको pm प्रयोग गरिएको एउटा हो ondemand,यद्यपि यसले निष्क्रिय समयमा स्रोतको प्रयोग घटाउन सक्छ, जब ट्राफिक अचानक बढ्छ, प्रक्रियाले समयमै प्रतिक्रिया दिन सक्षम नहुन सक्छ।, जसको परिणामस्वरूप ५०० त्रुटि हुन्छ।
१. PHP-FPM प्रक्रिया पूल प्यारामिटरहरू समायोजन गर्नुहोस्
यदि कन्फिगरेसनले प्रयोग गर्छ भने dynamicयो केही कार्य प्रक्रियाहरू पूर्व-सुरु गर्ने र अनुरोध भोल्युम अनुसार गतिशील रूपमा समायोजन गर्ने विधि हो, जसले अनुरोध भोल्युम अचानक बढ्दा छिटो प्रतिक्रिया दिन सक्छ।
निश्चित मात्रामा ट्राफिक भएका वेबसाइटहरूको लागि, यो प्रयोग गर्न सिफारिस गरिन्छ pm = dynamicकिनभने यसले निश्चित मात्रामा निष्क्रिय प्रक्रियाहरू कायम राख्न सक्छ र उच्च समवर्ती समयमा ५०० त्रुटिहरूबाट बच्न सक्छ।
पहुँच भोल्युम अत्यन्तै कम भएको र मेमोरी स्रोतहरू टाइट भएको बेला मात्र यसलाई प्रयोग गर्न सिफारिस गरिन्छ। pm = ondemand स्रोतहरू बचत गर्न।
सिफारिस गरिएको ondemand, र अनुकूलन गर्नुहोस् pm.max_children र अन्य प्यारामिटरहरू:
pm = dynamic
pm.max_children = 16 ; 根据服务器资源调整,建议值:CPU 核心数 × 2
pm.start_servers = 4 ; 初始进程数,建议设为 max_children × 25%
pm.min_spare_servers = 2 ; 最小空闲进程数
pm.max_spare_servers = 7 ; 最大空闲进程数
pm.max_requests = 3000 ; 每个子进程处理完 3000 个请求后自动重启
pm.process_idle_timeout = 10s ; 空闲进程 10s 后自动退出
तपाईं यसलाई किन यसरी परिवर्तन गर्न चाहनुहुन्छ?
pm = dynamic: माग अनुसारको अनुरोध पर्खाइबाट बच्न प्रक्रियाहरूलाई अझ लचिलो रूपमा बाँडफाँड गर्नुहोस्;pm.max_children = 16: धेरै कम प्रक्रियाहरूको कारणले हुने ५०० त्रुटिहरू रोक्नुहोस्;pm.start_servers = 5: ढिलो प्रक्रिया सुरुवातबाट बच्नुहोस्;pm.max_requests = 3000:मेमोरी चुहावट रोक्ने, प्रक्रिया नियमित रूपमा पुन: प्रयोग गर्नुहोस्।
२. दीर्घकालीन कब्जा रोक्नको लागि PHP स्क्रिप्टहरूको कार्यान्वयन समय सीमित गर्नुहोस्
request_terminate_timeout = 30s ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M ; 限制 PHP 进程最大内存占用
यसले केहीलाई रोक्न सक्छधेरै CPU प्रयोग गर्ने PHP स्क्रिप्टहरूले तपाईंको सर्भरलाई तल ल्याउन सक्छ।।
बचत गरेपछि, PHP प्रक्रिया पुन: सुरु गर्नुहोस्:
sudo systemctl restart php8.3-fpmकुनै पनि समयमा प्रगति ट्र्याक राख्न PHP-FPM स्थिति अनुगमन सक्षम गर्नुहोस्।
PHP-FPM प्रक्रिया अनुगमन सक्षम गर्नुहोस् र यसलाई कुनै पनि समयमा हेर्नुहोस्हाल सक्रिय प्रक्रियाहरूको संख्या र अनुरोध प्रतीक्षा स्थिति, सर्भर ओभरलोडिङबाट बच्न।
在 php-fpm.conf थपिएको:
pm.status_path = /status
त्यसपछि, Nginx कन्फिगरेसन:
location /status {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
allow 127.0.0.1;
deny all;
}
यसरी, तपाईं सक्नुहुन्छ http://yourdomain.com/status PHP-FPM लाई कार्यमा हेर्नुहोस्!
समस्याहरूको द्रुत निवारण गर्न PHP-FPM लगहरू अप्टिमाइज गर्नुहोस्
在 php-fpm.conf यसमा थप्नुहोस्:
php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_value[log_errors] = On
php_admin_value[error_reporting] = E_ALL
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s ; 执行超过 5s 的脚本记录到日志
यसरी, जब पनि ५०० त्रुटि हुन्छ, तपाईंले लग सिधै हेर्न सक्नुहुन्छ:
tail -f /var/log/php-fpm/error.log
हेर्नुहोस् कि PHP ले त्रुटि रिपोर्ट गर्छ कि गर्दैन, जस्तै out of memory,script execution timeout प्रतीक्षा गर्नुहोस्।
मेमोरी चुहावट रोक्नको लागि नियमित रूपमा PHP-FPM पुन: सुरु गर्नुहोस्
पारित गर्न सक्षम cron लामो समयदेखि चलिरहेका प्रक्रियाहरूलाई रोक्नको लागि नियमित रूपमा PHP-FPM पुन: सुरु गर्नुहोस्मेमोरी चुहावट।
crontab -e
हरेक दिन बिहान ३ बजे PHP-FPM स्वचालित रूपमा पुन: सुरु गर्न निम्न तालिकाबद्ध कार्य थप्नुहोस्:
0 3 * * * /usr/sbin/service php8.3-fpm restart
समस्या रहिरह्यो भने के हुन्छ? थप अनुकूलन!
यदि तपाईंले अझै पनि माथिको अनुकूलन पालना गर्नुभयो भनेकहिलेकाहीँ ५०० त्रुटिहरू हुन्छन्, तपाईं निम्न अनुकूलनहरूसँग जारी राख्न सक्नुहुन्छ:
१. PHP कार्यान्वयन दक्षता सुधार गर्न OPcache सक्षम गर्नुहोस्
यदि OPcache अझै सक्षम गरिएको छैन भने, तपाईं यसलाई यसरी स्थापना गर्न सक्नुहुन्छ (उदाहरणको रूपमा Ubuntu प्रयोग गरेर):
sudo apt install php8.3-opcache -y
त्यसपछि सम्पादन गर्नुहोस् php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1
प्रभाव? PHP पृष्ठ कार्यान्वयन गति धेरै सुधार गरिएको छ!
२. Nginx कन्फिगरेसन अप्टिमाइजेसन
Nginx सम्बन्धित प्यारामिटरहरू उचित छन् भनी सुनिश्चित गर्नुहोस्, जस्तै fastcgi_read_timeout लामो कार्यान्वयन समयको कारणले गर्दा Nginx द्वारा PHP स्क्रिप्टहरू समाप्त हुनबाट जोगिन यसलाई उचित रूपमा समायोजन गर्नुहोस्:
fastcgi_read_timeout 60s;
client_max_body_size 100M;
सारांश: PHP-FPM अप्टिमाइज गर्नुहोस् र वेबसाइट अब क्र्यास हुनेछैन!
यो अप्टिमाइजेसन पछि हामीले के कस्ता समायोजनहरू गरेका छौं?
✅ PHP-FPM प्रक्रिया पूल अनुकूलन गर्दै, प्रयोग गर्नुहोस् ondemandर अप्टिमाइज गर्नुहोस् pm.max_children प्यारामिटर;
✅ PHP स्क्रिप्टहरूको कार्यान्वयन समय सीमित गर्दै, दीर्घकालीन CPU कब्जा रोक्न;
✅ PHP-FPM अनुगमन सक्षम गर्नुहोस्, वास्तविक समयमा प्रक्रिया लोड हेर्नुहोस्;
✅ PHP-FPM लगहरू अनुकूलन गर्दै, ५०० त्रुटिहरूको द्रुत रूपमा समस्या निवारण गर्नुहोस्;
✅ नियमित रूपमा PHP-FPM पुन: सुरु गर्नुहोस्, मेमोरी चुहावट रोक्न;
✅ OPcache सक्षम पार्नुहोस्, PHP कार्यान्वयन दक्षता सुधार गर्नुहोस्;
✅ Nginx कन्फिगरेसन अनुकूलन गर्दै, टाइमआउट समस्याहरूबाट बच्न।
यो अप्टिमाइजेसन पछि, PHP-FPM लोड धेरै कम हुनेछ र वेबसाइट सञ्चालन अझ स्थिर हुनेछ! 🔥
अहिले नै प्रयास गर्नुहोस्! 💪🚀
आशा चेन वेइलियाङ ब्लग ( https://www.chenweiliang.com/ ) साझा गरिएको "HestiaCP PHP-FPM लोड धेरै उच्च छ? गतिशील वेब पेज ५०० त्रुटि? यो अप्टिमाइजेसन तुरुन्तै लागू हुनेछ! ", यो तपाईंलाई उपयोगी हुन सक्छ।
यस लेखको लिङ्क साझा गर्न स्वागत छ:https://www.chenweiliang.com/cwl-32512.html
थप लुकेका चालहरू अनलक गर्न🔑, हाम्रो टेलिग्राम च्यानलमा सामेल हुन स्वागत छ!
मन परे लाइक र सेयर गर्नुहोस ! तपाईको सेयर र लाइक हाम्रो निरन्तर प्रेरणा हो!