آرٹیکل ڈائرکٹری
- 1 PHP-FPM کے اوورلوڈ ہونے کی بنیادی وجہ
- 2 PHP-FPM عمل پول آپٹیمائزیشن (کور پیرامیٹر ایڈجسٹمنٹ)
- 3 کسی بھی وقت پیشرفت پر نظر رکھنے کے لیے PHP-FPM اسٹیٹس مانیٹرنگ کو فعال کریں۔
- 4 مسائل کے فوری حل کے لیے PHP-FPM لاگز کو بہتر بنائیں
- 5 میموری لیک ہونے سے بچنے کے لیے PHP-FPM کو باقاعدگی سے دوبارہ شروع کریں۔
- 6 اگر مسئلہ برقرار رہے تو کیا ہوگا؟ مزید اصلاح!
- 7 خلاصہ: PHP-FPM کو آپٹمائز کریں اور ویب سائٹ مزید کریش نہیں ہوگی!
کیا آپ نے کبھی اس صورتحال کا سامنا کیا ہے؟PHP-FPM کو دوبارہ شروع کرنے کے بعد، ویب سائٹ تک رسائی اچانک سست ہو گئی، یا اس کے نتیجے میں 500 غلطی ہو گئی۔، لیکن مسئلہ تھوڑی دیر کے بعد دوبارہ ظاہر ہوتا ہے؟ یہ بہت مایوس کن ہے!
یہ کیوں ہو رہا ہے؟اصل میں، یہ عام طور پر ہےPHP-FPM پروسیس پول صحیح طریقے سے ترتیب نہیں دیا گیا ہے، یا سرور کے وسائل ناکافی ہیں۔کی وجہ سے. آج، ہم اچھی طرح سے اصلاح کریں گے ہیسٹیا سی پی 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 کا 70% سے زیادہ حصہ لے رہے ہیں؟ اگر ایسا اکثر ہوتا ہے، تو آپ کا 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 کے ذریعہ ترتیب دیا گیا پی ایچ پی ورژن سے استفسار کریں۔
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 خرابی ہوتی ہے۔
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 进程最大内存占用
یہ کچھ کو روک سکتا ہے۔پی ایچ پی اسکرپٹ جو بہت زیادہ سی پی یو استعمال کرتی ہیں وہ آپ کے سرور کو نیچے لا سکتی ہیں۔ہے.
محفوظ کرنے کے بعد، پی ایچ پی کے عمل کو دوبارہ شروع کریں:
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 کو روزانہ صبح 3 بجے خودکار طور پر دوبارہ شروع کرنے کے لیے درج ذیل طے شدہ کام کو شامل کریں:
0 3 * * * /usr/sbin/service php8.3-fpm restart
اگر مسئلہ برقرار رہے تو کیا ہوگا؟ مزید اصلاح!
اگر آپ اب بھی اوپر کی اصلاح پر عمل کرتے ہیں۔کبھی کبھار 500 غلطیاں ہو جاتی ہیں۔، آپ درج ذیل اصلاح کے ساتھ جاری رکھ سکتے ہیں:
1. پی ایچ پی کی کارکردگی کو بہتر بنانے کے لیے 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
اثر؟ پی ایچ پی کے صفحے پر عمل درآمد کی رفتار کو بہت بہتر کیا گیا ہے!
2. Nginx کنفیگریشن آپٹیمائزیشن
یقینی بنائیں کہ Nginx سے متعلقہ پیرامیٹرز معقول ہیں، جیسے fastcgi_read_timeout طویل عملدرآمد کے وقت کی وجہ سے Nginx کے ذریعہ پی ایچ پی اسکرپٹس کو ختم کرنے سے بچنے کے لئے اسے مناسب طریقے سے ایڈجسٹ کریں:
fastcgi_read_timeout 60s;
client_max_body_size 100M;
خلاصہ: PHP-FPM کو آپٹمائز کریں اور ویب سائٹ مزید کریش نہیں ہوگی!
اس اصلاح کے بعد ہم نے کیا ایڈجسٹمنٹ کی ہے؟
✅ PHP-FPM عمل کے پول کو بہتر بنانا، استعمال کریں ondemandاور اصلاح کریں۔ pm.max_children پیرامیٹر
✅ پی ایچ پی اسکرپٹس پر عمل درآمد کے وقت کو محدود کرنا, طویل مدتی CPU قبضے کو روکنے کے لیے؛
✅ PHP-FPM مانیٹرنگ کو فعال کریں۔اصل وقت میں عمل کا بوجھ دیکھیں۔
✅ PHP-FPM لاگز کو بہتر بنانا500 غلطیوں کا فوری ازالہ کریں۔
✅ PHP-FPM کو باقاعدگی سے دوبارہ شروع کریں۔، میموری لیک کو روکنے کے؛
✅ OPcache کو فعال کریں۔پی ایچ پی کی کارکردگی کو بہتر بنانا؛
✅ Nginx کنفیگریشن کو بہتر بناناوقت ختم ہونے کے مسائل سے بچنے کے لیے۔
اس اصلاح کے بعد، PHP-FPM کا بوجھ بہت کم ہو جائے گا اور ویب سائٹ کا آپریشن زیادہ مستحکم ہو جائے گا! 🔥
جاؤ اسے ابھی آزمائیں! 💪🚀
ہوپ چن ویلیانگ بلاگ ( https://www.chenweiliang.com/ ) نے اشتراک کیا "HestiaCP PHP-FPM لوڈ بہت زیادہ ہے؟ متحرک ویب صفحہ 500 غلطی؟ یہ اصلاح فوری طور پر نافذ ہو جائے گی! ”، یہ آپ کے لیے مددگار ثابت ہو سکتا ہے۔
اس مضمون کا لنک شیئر کرنے میں خوش آمدید:https://www.chenweiliang.com/cwl-32512.html
مزید پوشیدہ چالوں کو کھولنے کے لیے، ہمارے ٹیلیگرام چینل میں شامل ہونے میں خوش آمدید!
پسند آئے تو شیئر اور لائک کریں! آپ کے شیئرز اور لائکس ہماری مسلسل حوصلہ افزائی ہیں!