បញ្ជីអត្ថបទ
- 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 មិនអាចឆ្លើយតបទៅនឹងសំណើថ្មីក្នុងលក្ខណៈទាន់ពេលវេលា។
- ដំណើរការតិចតួចពេកនៅពេលដែលចរាចរណ៍កើនឡើងភ្លាមៗ វាមិនអាចដំណើរការទាន់ពេលទេ។
- ការប្រើប្រាស់ដំណើរការគឺខ្ពស់ពេកបណ្តាលឱ្យការផ្ទុកស៊ីភីយូផ្ទុះ។
តើធ្វើដូចម្តេចដើម្បីប្រាប់ថាតើ 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
សូមមើលពីរបៀបដែលដំណើរការទាំងនេះកំពុងកាន់កាប់លើសពី 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 បើចូលចិត្ត! ការចែករំលែក និងការចូលចិត្តរបស់អ្នកគឺជាការលើកទឹកចិត្តបន្តរបស់យើង!