HestiaCP php-fpm প্রক্রিয়াটি প্রচুর CPU রিসোর্স নেয়। আমি কীভাবে এটি অপ্টিমাইজ করতে পারি?

HestiaCP সার্ভারে সিপিইউ স্পাইক? PHP-FPM প্রসেস অপটিমাইজেশনের একটি সম্পূর্ণ নির্দেশিকা!

HestiaCP php-fpm প্রক্রিয়াটি প্রচুর CPU রিসোর্স নেয়। আমি কীভাবে এটি অপ্টিমাইজ করতে পারি?

আপনার সার্ভারের সিপিইউ কি অনবরত ১০০% ব্যবহৃত হচ্ছে? ফ্যানগুলো কি খুব জোরে ঘুরছে? আপনার ওয়েবসাইট কি ধীরে লোড হচ্ছে? এর কারণ হতে পারে php-fpm!

আমি সম্প্রতি আবিষ্কার করেছি chenweiliang.com এই পিএইচপি পুলটি php-fpm এই প্রক্রিয়াটি সিপিইউকে পাগলের মতো খেয়ে ফেলল, এবং সার্ভারটি ক্র্যাশ হয়ে গেল!

সার্ভারটি পুনরুজ্জীবিত করার জন্য, আমি বেশ কয়েকটি অপ্টিমাইজেশন পদ্ধতি চেষ্টা করেছিলাম এবং অবশেষে CPU ব্যবহার কমাতে সফল হয়েছিলাম।

এবার, এই কার্যকরী অপটিমাইজেশন গাইডটি শেয়ার করা যাক ! 🚀

১. 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

এতে বোঝা যায় যে ওয়েবসাইটটি পিএইচপি ৮.৩ ব্যবহার করে ।

নিম্নলিখিত পরামিতিগুলি সনাক্ত করুন এবং সংশোধন করুন:

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 后自动退出

তারপর রিবুট করুন php-fpm এটি কার্যকর করার জন্য:

sudo systemctl restart php-fpm

✅কার্যকারিতা : প্রসেসের সংখ্যা সীমিত করে php-fpm-কে সিপিইউ রিসোর্সের অতিরিক্ত ব্যবহার থেকে বিরত রাখে।

২. OPCache সক্ষম করুন (PHP কর্মক্ষমতা উন্নত করতে)

পিএইচপি কোডটি প্রতিবার কার্যকর করার সময় পুনরায় পার্স করে, যা সম্পদের অপচয়।
সমাধান? OPCache সক্ষম করুন এবং আপনার PHP কোড ক্যাশে করুন!

编辑 php.ini ফাইল:

sudo nano /etc/php/*/fpm/php.ini

নিম্নলিখিতগুলি যোগ করুন বা সংশোধন করুন:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0  # 禁用实时检测,提高性能

সংরক্ষণের পরে, পিএইচপি প্রক্রিয়াটি পুনরায় চালু করুন:

sudo systemctl restart php8.3-fpm

✅কার্যকারিতা : পিএইচপি কোডের পুনরাবৃত্তিমূলক পার্সিং কমায়, সিপিইউ-এর উপর চাপ হ্রাস করে এবং কার্য সম্পাদনের দক্ষতা বৃদ্ধি করে।

৩. পিএইচপি স্ক্রিপ্টের সর্বোচ্চ কার্যকর সময় সীমিত করুন

যদি একটি PHP স্ক্রিপ্ট খুব বেশি সময় ধরে চলে, তাহলে CPU রিসোর্সগুলি ক্রমাগত দখল হয়ে যাবে।
একটি যুক্তিসঙ্গত সময়সীমা নির্ধারণ করলে "একগুঁয়ে" প্রক্রিয়াগুলি দীর্ঘ সময়ের জন্য সার্ভার দখল করা থেকে বিরত থাকতে পারে।

খোলা php.ini ফাইল:

sudo nano /etc/php/*/fpm/php.ini

নিম্নলিখিত পরামিতিগুলি পরিবর্তন করুন:

max_execution_time = 30  # PHP 脚本最多执行 30max_input_time = 30  # 处理输入数据最多 30memory_limit = 256M  # 限制单个 PHP 进程的内存占用

তারপর পিএইচপি প্রক্রিয়াটি পুনরায় চালু করুন:

sudo systemctl restart php-fpm

✅কার্যকারিতা : পিএইচপি প্রসেসগুলোকে দীর্ঘ সময় ধরে চলতে বাধা দেয়, ফলে সিপিইউ রিসোর্সের অপচয় কমে।

4. চেক করুন মাইএসকিউএল ধীরগতির কোয়েরি

PHP-FPM-এর লোড বেশি,এটি ধীর SQL কোয়েরির কারণে হতে পারে!
চালু করা মাইএসকিউএল ধীরগতির কোয়েরি লগ, আটকে থাকা SQL স্টেটমেন্টগুলি খুঁজে বের করুন।

MySQL কনফিগারেশন ফাইলটি সম্পাদনা করুন:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

যোগ করুন:

slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1  # 超过 1 秒的查询会被记录

সংরক্ষণের পরে, MySQL পুনরায় চালু করুন:

sudo systemctl restart mysql

তারপর ব্যবহার করুন mysqldumpslow ধীরগতির প্রশ্ন বিশ্লেষণ করুন:

mysqldumpslow -s c -t 10 /var/log/mysql-slow.log

✅ফলাফল : সময়সাপেক্ষ SQL কোয়েরি শনাক্ত করুন, ডাটাবেসের পারফরম্যান্স উন্নত করুন এবং পরোক্ষভাবে PHP-এর উপর চাপ কমান।

৫. বিধিনিষেধ memcached সম্পদ ব্যবহার

প্রক্রিয়া তালিকাটি দেখে আমি দেখতে পেলাম মেমক্যাশ করা প্রক্রিয়ার CPU ব্যবহার ২৪.৮%!
এটা হতে পারে যে ক্যাশে বরাদ্দ খুব বেশি, যার ফলে CPU-কে প্রচুর পরিমাণে ডেটা প্রক্রিয়া করতে হয়।

সমন্বয় memcached কনফিগারেশন:

sudo nano /etc/memcached.conf

সংশোধন:

-m 32  # 限制 Memcached 内存使用 32MB

তারপর রিবুট করুন:

sudo systemctl restart memcached

✅কার্যকারিতা : Memcached প্রসেসের উপর সিপিইউ-এর চাপ কমায় এবং ক্যাশিং দক্ষতা বাড়ায়।

৬. স্ট্যাটিক রিসোর্স ক্যাশে করতে Nginx সক্ষম করুন

অনেক সময়, PHP এমন অনুরোধগুলি প্রক্রিয়া করে যেখানে প্রচুর সংখ্যক থাকে সিএসএস, জেএস, ছবি, কিন্তু এই ফাইলগুলির PHP পার্সিংয়ের মোটেও প্রয়োজন নেই!
সমাধান? স্ট্যাটিক রিসোর্স ক্যাশে করতে Nginx ব্যবহার করুন!

Nginx কনফিগারেশন সম্পাদনা করুন:

sudo nano /etc/nginx/nginx.conf

যোগ করুন:

location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
    expires max;
    log_not_found off;
}

সংরক্ষণের পরে, Nginx পুনরায় চালু করুন:

sudo systemctl restart nginx

✅কার্যকারিতা : পিএইচপি দ্বারা স্ট্যাটিক ফাইল প্রসেস করার সংখ্যা কমিয়ে দেয়, ফলে সিপিইউ ব্যবহার হ্রাস পায়।

৭. সবচেয়ে বেশি CPU ব্যবহার করে এমন PHP স্ক্রিপ্টটি খুঁজুন

যদি অপ্টিমাইজেশনের পরেও সিপিইউ খুব বেশি থাকে, তাহলে হতে পারে কিছু পিএইচপি স্ক্রিপ্ট খুব বেশি চলছে।
সর্বোচ্চ CPU ব্যবহারের সাথে PHP প্রক্রিয়াটি খুঁজে বের করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php

যদি আপনি দেখেন যে একটি PHP স্ক্রিপ্ট খুব বেশি CPU নিচ্ছে, তাহলে আপনি সরাসরি এটি বন্ধ করতে পারেন:

kill -9 PID

✅ফলাফল : ক্ষতিকর প্রসেসগুলোকে নির্ভুলভাবে শনাক্ত করে এবং পিএইচপি প্রসেসগুলোকে দীর্ঘ সময়ের জন্য সিপিইউ দখল করে রাখা থেকে বিরত রাখে।

সারাংশ: PHP-FPM অপ্টিমাইজ করার ৭টি উপায়

PHP-FPM প্রক্রিয়ার সংখ্যা সীমিত করুন, CPU ওভারলোড প্রতিরোধ করতে
OPCache সক্ষম করুন, পিএইচপি কোডের বারবার পার্সিং কমানো
পিএইচপি টাইমআউট সেট করা হচ্ছে, দীর্ঘমেয়াদী অপারেশন প্রতিরোধ করতে
MySQL ধীরগতির কোয়েরি পরীক্ষা করা হচ্ছে, ডাটাবেস কোয়েরি কর্মক্ষমতা অপ্টিমাইজ করুন
মেমক্যাশ করা মেমোরি সামঞ্জস্য করুন, CPU বোঝা কমানো
Nginx স্ট্যাটিক ক্যাশে সক্ষম করুন, PHP পার্সিং বোঝা কমানো
উচ্চ CPU ব্যবহারের PHP স্ক্রিপ্টগুলি খুঁজুন, সুনির্দিষ্ট অপ্টিমাইজেশন

উপসংহারে

সার্ভার অপ্টিমাইজেশন হলো ফিটনেসের মতো, আপনাকে সুনির্দিষ্ট সমন্বয় করতে হবে এবং এলোমেলো করতে হবে না!
ধারাবাহিক অপ্টিমাইজেশনের পর, আমার সার্ভারের CPU লোড কমে গেছে ৮০% কমে ১৫% হয়েছে, ওয়েবসাইটটি দ্বিগুণ দ্রুত খোলে!
যদি আপনার সার্ভারেও একই রকম সমস্যা থাকে, তাহলে এই পদ্ধতিগুলি ব্যবহার করে দেখুন! 💪

👉 এখনই ব্যবস্থা নিন! আপনার PHP-FPM অপ্টিমাইজ করুন এবং আপনার সার্ভারকে বাঁচান! 🚀

আশা করি, চেন ওয়েইলিয়াং-এর ব্লগে ( https://www.chenweiliang.com/ ) শেয়ার করা "HestiaCP php-fpm process consumes a lot of CPU resources, how to optimize it?" শীর্ষক আর্টিকেলটি আপনার জন্য সহায়ক হবে।

এই নিবন্ধটির লিঙ্কটি নির্দ্বিধায় শেয়ার করুন: https://www.chenweiliang.com/cwl-32490.html

আরও লুকানো কৌশল 🔑 জানতে, আমাদের টেলিগ্রাম চ্যানেলে যোগদান করতে স্বাগতম!

ভালো লাগলে শেয়ার এবং লাইক করুন! আপনার শেয়ার এবং লাইক আমাদের অব্যাহত অনুপ্রেরণা!

 

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

উপরে যান