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

कैसे पता करें कि PHP-FPM ओवरलोड है?
उपयोग कर सकते हैं top 或 htop सीपीयू और मेमोरी उपयोग देखने के लिए कमांड:
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 का 70% से अधिक भाग ले रही हैं? यदि ऐसा अक्सर होता है, तो आपका 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,यद्यपि यह निष्क्रिय समय के दौरान संसाधन उपयोग को कम कर सकता है, लेकिन जब ट्रैफ़िक अचानक बढ़ जाता है, तो प्रक्रिया समय पर प्रतिक्रिया देने में सक्षम नहीं हो सकती है।जिसके परिणामस्वरूप 500 त्रुटि हुई।
1. PHP-FPM प्रक्रिया पूल पैरामीटर समायोजित करें
यदि कॉन्फ़िगरेशन उपयोग करता है dynamicयह कुछ कार्य प्रक्रियाओं को पूर्व-प्रारंभ करने और अनुरोध मात्रा के अनुसार उन्हें गतिशील रूप से समायोजित करने की एक विधि है, जो अनुरोध मात्रा अचानक बढ़ने पर तेजी से प्रतिक्रिया दे सकती है।
एक निश्चित मात्रा में ट्रैफ़िक वाली वेबसाइटों के लिए, इसका उपयोग करने की अनुशंसा की जाती है pm = dynamicक्योंकि यह एक निश्चित मात्रा में निष्क्रिय प्रक्रियाओं को बनाए रख सकता है और उच्च समवर्तीता के दौरान 500 त्रुटियों से बच सकता है।
इसका उपयोग केवल तभी करने की अनुशंसा की जाती है जब एक्सेस वॉल्यूम बहुत कम हो और मेमोरी संसाधन सीमित हों। 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: बहुत कम प्रक्रियाओं के कारण होने वाली 500 त्रुटियों को रोकें;pm.start_servers = 5: धीमी प्रक्रिया स्टार्टअप से बचें;pm.max_requests = 3000:मेमोरी लीक को रोकना, प्रक्रिया को नियमित रूप से रीसायकल करें।
2. लंबे समय तक व्यस्त रहने से बचने के लिए 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 的脚本记录到日志
इस तरह, जब भी 500 त्रुटि होती है, तो आप सीधे लॉग देख सकते हैं:
tail -f /var/log/php-fpm/error.log
देखें कि क्या PHP कोई त्रुटि रिपोर्ट करता है, जैसे out of memory,script execution timeout 等।
मेमोरी लीक को रोकने के लिए PHP-FPM को नियमित रूप से पुनः आरंभ करें
पास करने में सक्षम cron लंबे समय से चल रही प्रक्रियाओं को रोकने के लिए नियमित रूप से PHP-FPM को पुनः आरंभ करेंस्म्रति से रिसाव.
crontab -e
प्रतिदिन प्रातः 3 बजे PHP-FPM को स्वचालित रूप से पुनः आरंभ करने के लिए निम्नलिखित निर्धारित कार्य जोड़ें:
0 3 * * * /usr/sbin/service php8.3-fpm restart
यदि समस्या बनी रहे तो क्या होगा? आगे भी अनुकूलन!
यदि आप अभी भी उपरोक्त अनुकूलन का पालन करते हैंकभी-कभी 500 त्रुटियाँ होती हैं, आप निम्नलिखित अनुकूलन के साथ जारी रख सकते हैं:
1. 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 पृष्ठ निष्पादन गति में बहुत सुधार हुआ है!
2. 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 स्क्रिप्ट के निष्पादन समय को सीमित करना, लंबे समय तक सीपीयू पर कब्जे को रोकने के लिए;
✅ PHP-FPM मॉनिटरिंग सक्षम करें, वास्तविक समय में प्रक्रिया लोड देखें;
✅ PHP-FPM लॉग का अनुकूलन, 500 त्रुटियों का शीघ्र निवारण करें;
✅ PHP-FPM को नियमित रूप से पुनः आरंभ करें, मेमोरी लीक को रोकें;
✅ OPcache सक्षम करें, PHP निष्पादन दक्षता में सुधार;
✅ Nginx कॉन्फ़िगरेशन का अनुकूलन, टाइमआउट समस्याओं से बचने के लिए.
इस अनुकूलन के बाद, PHP-FPM लोड बहुत कम हो जाएगा और वेबसाइट संचालन अधिक स्थिर हो जाएगा! 🔥
अब जाकर प्रयास करें! 💪🚀
होप चेन वेइलियांग ब्लॉग ( https://www.chenweiliang.com/ ) ने साझा किया "HestiaCP PHP-FPM लोड बहुत अधिक है? गतिशील वेब पेज 500 त्रुटि? यह अनुकूलन तुरंत प्रभावी होगा! ”, यह आपके लिए मददगार हो सकता है.
इस लेख का लिंक साझा करने के लिए आपका स्वागत है:https://www.chenweiliang.com/cwl-32512.html
अधिक छिपी हुई ट्रिक्स को अनलॉक करने के लिए, हमारे टेलीग्राम चैनल से जुड़ने के लिए आपका स्वागत है!
पसंद आये तो शेयर और लाइक करें! आपके शेयर और लाइक हमारी निरंतर प्रेरणा हैं!