HestiaCP PHP-FPM ស្ថិតនៅក្រោមបន្ទុកធ្ងន់មែនទេ? ទំព័របណ្តាញថាមវន្ត 500 កំហុស? ការបង្កើនប្រសិទ្ធភាពនេះនឹងមានប្រសិទ្ធភាពភ្លាមៗ!

បញ្ជីអត្ថបទ

តើអ្នកធ្លាប់ជួបប្រទះស្ថានភាពនេះទេ?ការចូលប្រើគេហទំព័រភ្លាមៗបានថយចុះ ឬសូម្បីតែបណ្តាលឱ្យមានកំហុស 500 បន្ទាប់ពីចាប់ផ្តើម PHP-FPM ឡើងវិញ វាត្រឡប់ទៅធម្មតាវិញ។ប៉ុន្តែបញ្ហានឹងលេចឡើងម្តងទៀតបន្ទាប់ពីមួយរយៈ? ខ្លោចចិត្តណាស់!

ហេតុអ្វីរឿងនេះកើតឡើង?តាមពិតនេះជាធម្មតាបណ្តុំដំណើរការ PHP-FPM មិនត្រូវបានកំណត់រចនាសម្ព័ន្ធត្រឹមត្រូវ ឬធនធានម៉ាស៊ីនមេមិនគ្រប់គ្រាន់ទេ។បង្កឡើងដោយ។ ថ្ងៃនេះ យើងនឹងបង្កើនប្រសិទ្ធភាពឱ្យបានហ្មត់ចត់ HestiaCP PHP-FPM នៅក្រោមក្រណាត់ធ្វើឱ្យគេហទំព័រមានស្ថេរភាពដូចថ្ម!

មូលហេតុចម្បងដែល PHP-FPM ត្រូវបានផ្ទុកលើសទម្ងន់

PHP-FPM គឺ កអ្នកគ្រប់គ្រងដំណើរការដែលទទួលខុសត្រូវក្នុងការដោះស្រាយសំណើថាមវន្ត។ ប្រសិនបើការកំណត់រចនាសម្ព័ន្ធមិនសមហេតុផល វាអាចនាំទៅដល់៖

  • ធនធានម៉ាស៊ីនមេត្រូវបានអស់ដែលធ្វើឱ្យ PHP-FPM មិនអាចឆ្លើយតបទៅនឹងសំណើថ្មីក្នុងលក្ខណៈទាន់ពេលវេលា។
  • ដំណើរការតិចតួចពេកនៅពេលដែលចរាចរណ៍កើនឡើងភ្លាមៗ វាមិនអាចដំណើរការទាន់ពេលទេ។
  • ការប្រើប្រាស់ដំណើរការគឺខ្ពស់ពេកបណ្តាលឱ្យការផ្ទុកស៊ីភីយូផ្ទុះ។

HestiaCP PHP-FPM ស្ថិតនៅក្រោមបន្ទុកធ្ងន់មែនទេ? ទំព័របណ្តាញថាមវន្ត 500 កំហុស? ការបង្កើនប្រសិទ្ធភាពនេះនឹងមានប្រសិទ្ធភាពភ្លាមៗ!

តើធ្វើដូចម្តេចដើម្បីប្រាប់ថាតើ PHP-FPM ត្រូវបានផ្ទុកលើសទម្ងន់?

អាច​ប្រើប្រាស់ tophtop ពាក្យបញ្ជាដើម្បីមើលការប្រើប្រាស់ 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

សូមមើលពីរបៀបដែលដំណើរការទាំងនេះកំពុងកាន់កាប់លើសពី 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

តោះមើលការកំណត់ 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 = ondemandនិងកែតម្រូវប៉ារ៉ាម៉ែត្រពាក់ព័ន្ធ;
  • ឡើង php-fpm.conf, ពិនិត្យឡើងវិញ pm = dynamic 为។ pm = ondemandដូច្នេះដំណើរការ PHP ត្រូវបានចាប់ផ្តើមតែនៅពេលចាំបាច់ ដោយមិនខ្ជះខ្ជាយធនធាន CPU! 🚀

បានស្នើទៅ ondemandនិងបង្កើនប្រសិទ្ធភាព pm.max_children និងប៉ារ៉ាម៉ែត្រផ្សេងទៀត៖

pm = ondemand
pm.max_children = 20  ; 根据服务器资源调整,建议值:CPU 核心数 × 2
pm.start_servers = 5   ; 初始进程数,建议设为 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៖ បែងចែកដំណើរការកាន់តែបត់បែន ដើម្បីជៀសវាងការរង់ចាំការស្នើសុំដែលអាចបណ្តាលមកពី ondemand;
  • pm.max_children = 20៖ ការពារកំហុសចំនួន 500 ដែលបណ្តាលមកពីដំណើរការតិចតួចពេក។
  • pm.start_servers = 5៖ ជៀសវាងការចាប់ផ្តើមដំណើរការយឺត;
  • pm.max_requests = 3000:ការពារការលេចធ្លាយអង្គចងចាំកែច្នៃដំណើរការនេះឱ្យបានទៀងទាត់។

2. កំណត់ពេលវេលាប្រតិបត្តិនៃស្គ្រីប PHP ដើម្បីការពារការកាន់កាប់រយៈពេលវែង

request_terminate_timeout = 30s  ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M  ; 限制 PHP 进程最大内存占用

នេះអាចទប់ស្កាត់បានខ្លះស្គ្រីប PHP ដែលប្រើស៊ីភីយូច្រើនពេកអាចបំផ្លាញម៉ាស៊ីនមេរបស់អ្នក។

បើកដំណើរការការត្រួតពិនិត្យស្ថានភាព 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

បន្ថែមកិច្ចការដែលបានកំណត់ពេលដូចខាងក្រោមដើម្បីចាប់ផ្តើម PHP-FPM ឡើងវិញដោយស្វ័យប្រវត្តិនៅម៉ោង 3 ព្រឹកជារៀងរាល់ថ្ងៃ៖

0 3 * * * /usr/sbin/service php8.3-fpm restart

ចុះបើបញ្ហានៅតែបន្ត? បង្កើនប្រសិទ្ធភាពបន្ថែមទៀត!

ប្រសិនបើអ្នកនៅតែធ្វើតាមការបង្កើនប្រសិទ្ធភាពខាងលើម្តងម្កាល 500 កំហុសកើតឡើងអ្នកអាចបន្តជាមួយនឹងការធ្វើឱ្យប្រសើរដូចខាងក្រោមៈ

1. បើកដំណើរការ OPcache ដើម្បីបង្កើនប្រសិទ្ធភាពនៃការប្រតិបត្តិ PHP

ប្រសិនបើ 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 កែតម្រូវវាឱ្យសមស្រប ដើម្បីជៀសវាងការបិទស្គ្រីប PHP ដោយ Nginx ដោយសារតែពេលវេលាប្រតិបត្តិយូរ៖

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 នឹងត្រូវបានកាត់បន្ថយយ៉ាងខ្លាំង ហើយប្រតិបត្តិការគេហទំព័រនឹងមានស្ថេរភាពជាងមុន! 🔥

ទៅសាកល្បងឥឡូវនេះ! 💪🚀

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) បានចែករំលែក "ការផ្ទុក HestiaCP PHP-FPM ខ្ពស់ពេក? ទំព័របណ្តាញថាមវន្ត 500 កំហុស? ការបង្កើនប្រសិទ្ធភាពនេះនឹងមានប្រសិទ្ធភាពភ្លាមៗ! ", វាអាចមានប្រយោជន៍សម្រាប់អ្នក។

សូមស្វាគមន៍ចំពោះការចែករំលែកតំណភ្ជាប់នៃអត្ថបទនេះ៖https://www.chenweiliang.com/cwl-32512.html

ដោះសោជំនួយ AI ហើយនិយាយថាលាទៅការងារដែលគ្មានប្រសិទ្ធភាព! 🔓💼


🔔 ទទួលបាន "DeepSeek Prompt Word Artifact" ភ្លាមៗនៅក្នុងបញ្ជីដែលបានខ្ទាស់ឆានែល! 🎯
📚 នឹកវា = នៅពីក្រោយជារៀងរហូត! ចាត់វិធានការឥឡូវនេះ! ⏳💨

Share និង Like បើចូលចិត្ត! ការចែករំលែក និងការចូលចិត្តរបស់អ្នកគឺជាការលើកទឹកចិត្តបន្តរបស់យើង!

 

发表评论។

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានផ្សព្វផ្សាយទេ។ 必填项已用។ * 标注។

រមូរទៅកំពូល