নিবন্ধ ডিরেক্টরি
- 1 PHP-FPM ওভারলোড হওয়ার মূল কারণ
- 2 PHP-FPM প্রসেস পুল অপ্টিমাইজেশন (কোর প্যারামিটার সমন্বয়)
- 3 যেকোনো সময় অগ্রগতি ট্র্যাক রাখতে PHP-FPM স্ট্যাটাস মনিটরিং সক্ষম করুন।
- 4 দ্রুত সমস্যা সমাধানের জন্য PHP-FPM লগগুলি অপ্টিমাইজ করুন
- 5 মেমোরি লিক প্রতিরোধ করতে নিয়মিত PHP-FPM পুনরায় চালু করুন
- 6 যদি সমস্যাটি চলতেই থাকে? আরও অপ্টিমাইজেশন!
- 7 সারাংশ: PHP-FPM অপ্টিমাইজ করুন এবং ওয়েবসাইট আর ক্র্যাশ হবে না!
তুমি কি কখনও এই পরিস্থিতির সম্মুখীন হয়েছো?ওয়েবসাইট অ্যাক্সেস হঠাৎ করে ধীর হয়ে যায়, এমনকি 500 ত্রুটির কারণও হয়। 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
এর মানে হল যে ওয়েবসাইটটি ব্যবহার করে পিএইচপি 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 ত্রুটি দেখা দেয়।
১. 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: খুব কম প্রক্রিয়ার কারণে সৃষ্ট ৫০০টি ত্রুটি প্রতিরোধ করুন;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 স্ক্রিপ্ট আপনার সার্ভারকে ডাউন করে দিতে পারে.
সংরক্ষণের পরে, পিএইচপি প্রক্রিয়াটি পুনরায় চালু করুন:
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
দেখুন পিএইচপি কোন ত্রুটি রিপোর্ট করে কিনা, যেমন out of memory,script execution timeout 等।
মেমোরি লিক প্রতিরোধ করতে নিয়মিত PHP-FPM পুনরায় চালু করুন
পাস করতে সক্ষম cron দীর্ঘমেয়াদী প্রক্রিয়াগুলি যাতে না ঘটে সেজন্য নিয়মিতভাবে PHP-FPM পুনরায় চালু করুনমেমোরি লিক.
crontab -e
প্রতিদিন ভোর ৩টায় স্বয়ংক্রিয়ভাবে PHP-FPM পুনরায় চালু করতে নিম্নলিখিত নির্ধারিত কাজটি যোগ করুন:
0 3 * * * /usr/sbin/service php8.3-fpm restart
যদি সমস্যাটি চলতেই থাকে? আরও অপ্টিমাইজেশন!
যদি আপনি এখনও উপরের অপ্টিমাইজেশন অনুসরণ করেনমাঝে মাঝে ৫০০টি ত্রুটি ঘটে, আপনি নিম্নলিখিত অপ্টিমাইজেশনগুলি চালিয়ে যেতে পারেন:
১. পিএইচপি এক্সিকিউশন দক্ষতা উন্নত করতে OPcache সক্ষম করুন
যদি OPcache এখনও সক্রিয় না থাকে, তাহলে আপনি এটি এভাবে ইনস্টল করতে পারেন (উবুন্টু ব্যবহার করে উদাহরণ হিসেবে):
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
প্রভাব? পিএইচপি পৃষ্ঠা সম্পাদনের গতি অনেক উন্নত হয়েছে!
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 প্যারামিটার;
✅ পিএইচপি স্ক্রিপ্টের কার্যকর করার সময় সীমিত করা, দীর্ঘমেয়াদী CPU দখল রোধ করতে;
✅ PHP-FPM পর্যবেক্ষণ সক্ষম করুন, রিয়েল টাইমে প্রক্রিয়া লোড দেখুন;
✅ PHP-FPM লগ অপ্টিমাইজ করা, দ্রুত ৫০০টি ত্রুটির সমাধান করুন;
✅ নিয়মিত PHP-FPM পুনরায় চালু করুন, মেমরি লিক প্রতিরোধ করুন;
✅ OPcache সক্ষম করুন, পিএইচপি এক্সিকিউশন দক্ষতা উন্নত করা;
✅ Nginx কনফিগারেশন অপ্টিমাইজ করা, টাইমআউট সমস্যা এড়াতে।
এই অপ্টিমাইজেশনের পরে, PHP-FPM লোড অনেক কমে যাবে এবং ওয়েবসাইটের কার্যক্রম আরও স্থিতিশীল হবে! 🔥
এখনই চেষ্টা করে দেখুন! 💪🚀 এর বিবরণ
হোপ চেন উইলিয়াং ব্লগ ( https://www.chenweiliang.com/ ) শেয়ার করা হয়েছে "HestiaCP PHP-FPM লোড কি খুব বেশি? ডায়নামিক ওয়েব পেজ ৫০০ ত্রুটি? এই অপ্টিমাইজেশন অবিলম্বে কার্যকর হবে! ”, এটা তোমার জন্য সহায়ক হতে পারে।
এই নিবন্ধটির লিঙ্ক শেয়ার করতে স্বাগতম:https://www.chenweiliang.com/cwl-32512.html
আরও লুকানো কৌশল 🔑 জানতে, আমাদের টেলিগ্রাম চ্যানেলে যোগদান করতে স্বাগতম!
ভালো লাগলে শেয়ার এবং লাইক করুন! আপনার শেয়ার এবং লাইক আমাদের অব্যাহত অনুপ্রেরণা!