ಲೇಖನ ಡೈರೆಕ್ಟರಿ
ಹೆಸ್ಟಿಯಾಸಿಪಿ ಸರ್ವರ್ CPU ಸ್ಪೈಕ್? PHP-FPM ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ಸಂಪೂರ್ಣ ಮಾರ್ಗದರ್ಶಿ!

ಸರ್ವರ್ CPU ಯಾವಾಗಲೂ 100% ನಲ್ಲಿದೆಯೇ? ಫ್ಯಾನ್ ಹುಚ್ಚುಚ್ಚಾಗಿ ತಿರುಗುತ್ತಿದೆಯೇ? ವೆಬ್ಸೈಟ್ ತೆರೆಯುವ ವೇಗ ಕಡಿಮೆಯಾಗುತ್ತಿದೆಯೇ?ಅಪರಾಧಿ php-fpm ಆಗಿರಬಹುದು!
ನಾನು ಇತ್ತೀಚೆಗೆ ಕಂಡುಹಿಡಿದದ್ದು chenweiliang.com ಈ PHP ಪೂಲ್ php-fpm ಈ ಪ್ರಕ್ರಿಯೆಯು CPU ಅನ್ನು ಹುಚ್ಚನಂತೆ ತಿಂದುಹಾಕಿತು ಮತ್ತು ಸರ್ವರ್ ಕ್ರ್ಯಾಶ್ ಆಯಿತು!
ಸರ್ವರ್ ಅನ್ನು ಪುನರುಜ್ಜೀವನಗೊಳಿಸಲು, ನಾನು ಹಲವಾರು ಆಪ್ಟಿಮೈಸೇಶನ್ ವಿಧಾನಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿದೆ ಮತ್ತು ಅಂತಿಮವಾಗಿ CPU ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುವಲ್ಲಿ ಯಶಸ್ವಿಯಾಗಿದ್ದೇನೆ.
ಈಗ, ಇದನ್ನು ಹಂಚಿಕೊಳ್ಳೋಣ ಪರಿಣಾಮಕಾರಿ ಆಪ್ಟಿಮೈಸೇಶನ್ ಮಾರ್ಗದರ್ಶಿ!🚀
1. php-fpm ಪ್ರಕ್ರಿಯೆಗಳ ಸಂಖ್ಯೆಯನ್ನು ಮಿತಿಗೊಳಿಸಿ
php-fpm ಡೀಫಾಲ್ಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳು ಇರಬಹುದುಅನಿಯಮಿತಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅನಿಯಂತ್ರಿತವಾಗಿ ರಚಿಸಲಾಗುತ್ತದೆ, ಇದರಿಂದಾಗಿ ಸರ್ವರ್ CPU ಓವರ್ಲೋಡ್ ಆಗುತ್ತದೆ.
ಅದನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು, ನಾವು ಪ್ರಕ್ರಿಯೆ ನಿರ್ವಹಣಾ ನಿಯತಾಂಕಗಳನ್ನು ಮಾರ್ಪಡಿಸಬಹುದು.
ಆನ್ ಮಾಡಿ 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
ಇದರರ್ಥ ಸೈಟ್ ಬಳಸುತ್ತದೆ PHP 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 CPU ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅತಿಯಾಗಿ ಬಳಸುವುದನ್ನು ತಡೆಯಲು ಪ್ರಕ್ರಿಯೆಗಳ ಸಂಖ್ಯೆಯನ್ನು ಮಿತಿಗೊಳಿಸಿ.
2. OPCache ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ (PHP ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು)
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 # 禁用实时检测,提高性能
ಉಳಿಸಿದ ನಂತರ, PHP ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ:
sudo systemctl restart php8.3-fpm
✅ 效果: PHP ಕೋಡ್ನ ಪುನರಾವರ್ತಿತ ಪಾರ್ಸಿಂಗ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿ, CPU ಹೊರೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಿ ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸುವ ದಕ್ಷತೆಯನ್ನು ಸುಧಾರಿಸಿ.
3. PHP ಸ್ಕ್ರಿಪ್ಟ್ಗಳ ಗರಿಷ್ಠ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯವನ್ನು ಮಿತಿಗೊಳಿಸಿ
ಒಂದು PHP ಸ್ಕ್ರಿಪ್ಟ್ ಹೆಚ್ಚು ಕಾಲ ರನ್ ಆಗಿದ್ದರೆ, CPU ಸಂಪನ್ಮೂಲಗಳು ನಿರಂತರವಾಗಿ ಆಕ್ರಮಿಸಲ್ಪಡುತ್ತವೆ.
ಸಮಂಜಸವಾದ ಕಾಲಾವಧಿ ಅವಧಿಯನ್ನು ಹೊಂದಿಸುವುದರಿಂದ "ಹಠಮಾರಿ" ಪ್ರಕ್ರಿಯೆಗಳು ಸರ್ವರ್ ಅನ್ನು ದೀರ್ಘಕಾಲದವರೆಗೆ ಆಕ್ರಮಿಸಿಕೊಳ್ಳುವುದನ್ನು ತಡೆಯಬಹುದು.
ಆನ್ ಮಾಡಿ php.ini ದಾಖಲೆ:
sudo nano /etc/php/*/fpm/php.ini
ಕೆಳಗಿನ ನಿಯತಾಂಕಗಳನ್ನು ಮಾರ್ಪಡಿಸಿ:
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
ನಂತರ PHP ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ:
sudo systemctl restart php-fpm
✅ 效果: PHP ಪ್ರಕ್ರಿಯೆಗಳು ದೀರ್ಘಕಾಲದವರೆಗೆ ಚಾಲನೆಯಾಗುವುದನ್ನು ತಡೆಯಿರಿ ಮತ್ತು CPU ಸಂಪನ್ಮೂಲ ವ್ಯರ್ಥವನ್ನು ಕಡಿಮೆ ಮಾಡಿ.
4. ಪರಿಶೀಲಿಸಿ MySQL ನಿಧಾನಗತಿಯ ಪ್ರಶ್ನೆ
PHP-FPM ಹೆಚ್ಚಿನ ಹೊರೆ ಹೊಂದಿದೆ,ಇದು ನಿಧಾನವಾದ SQL ಪ್ರಶ್ನೆಯಿಂದ ಉಂಟಾಗಿರಬಹುದು!
ಆನ್ ಮಾಡಿ MySQL ನಿಧಾನ ಪ್ರಶ್ನೆ ಲಾಗ್, ತಡೆಹಿಡಿಯುತ್ತಿರುವ 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 ಲೋಡ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿ.
5. ಮೆಮ್ಕ್ಯಾಶ್ಡ್ ಸಂಪನ್ಮೂಲ ಬಳಕೆಯನ್ನು ಮಿತಿಗೊಳಿಸಿ
ಪ್ರಕ್ರಿಯೆಗಳ ಪಟ್ಟಿಯನ್ನು ನೋಡಿದಾಗ, ನನಗೆ ಸಿಕ್ಕಿದ್ದು ಮೆಮ್ಕ್ಯಾಶ್ಡ್ ಪ್ರಕ್ರಿಯೆಯ CPU ಬಳಕೆ 24.8% ಆಗಿದೆ!
ಕ್ಯಾಶ್ ಹಂಚಿಕೆ ತುಂಬಾ ದೊಡ್ಡದಾಗಿರಬಹುದು, ಇದರಿಂದಾಗಿ CPU ಹೆಚ್ಚಿನ ಪ್ರಮಾಣದ ಡೇಟಾವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಬಹುದು.
ಹೊಂದಾಣಿಕೆ memcached ಕಾನ್ಫಿಗರೇಶನ್:
sudo nano /etc/memcached.conf
ಪರಿಷ್ಕರಿಸಿ:
-m 32 # 限制 Memcached 内存使用 32MB
ನಂತರ ರೀಬೂಟ್ ಮಾಡಿ:
sudo systemctl restart memcached
✅ 效果: ಮೆಮ್ಕ್ಯಾಶ್ಡ್ ಪ್ರಕ್ರಿಯೆಯ CPU ಹೊರೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಿ ಮತ್ತು ಕ್ಯಾಶ್ ದಕ್ಷತೆಯನ್ನು ಸುಧಾರಿಸಿ.
6. ಸ್ಥಿರ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು 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
✅ 效果: PHP ಸ್ಥಿರ ಫೈಲ್ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವ ಸಂಖ್ಯೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಿ ಮತ್ತು CPU ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಿ.
7. ಹೆಚ್ಚು CPU ಬಳಸುವ PHP ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಹುಡುಕಿ
ಆಪ್ಟಿಮೈಸೇಶನ್ ನಂತರವೂ CPU ತುಂಬಾ ಹೆಚ್ಚಿದ್ದರೆ, ಕೆಲವು PHP ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಹುಚ್ಚುಚ್ಚಾಗಿ ಚಾಲನೆಯಲ್ಲಿರಬಹುದು.
ಅತ್ಯಧಿಕ CPU ಬಳಕೆಯೊಂದಿಗೆ PHP ಪ್ರಕ್ರಿಯೆಯನ್ನು ಕಂಡುಹಿಡಿಯಲು ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
ಒಂದು PHP ಸ್ಕ್ರಿಪ್ಟ್ ಹೆಚ್ಚು CPU ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತಿದೆ ಎಂದು ನೀವು ಕಂಡುಕೊಂಡರೆ, ನೀವು ಅದನ್ನು ನೇರವಾಗಿ ಕೊಲ್ಲಬಹುದು:
kill -9 PID
✅ 效果:"ಕೆಟ್ಟ ಸೇಬುಗಳನ್ನು" ನಿಖರವಾಗಿ ಗುರುತಿಸಿ ಮತ್ತು PHP ಪ್ರಕ್ರಿಯೆಯು ದೀರ್ಘಕಾಲದವರೆಗೆ CPU ಅನ್ನು ಆಕ್ರಮಿಸಿಕೊಳ್ಳುವುದನ್ನು ತಡೆಯಿರಿ.
ಸಾರಾಂಶ: PHP-FPM ಅನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು 7 ಮಾರ್ಗಗಳು
✅ PHP-FPM ಪ್ರಕ್ರಿಯೆಗಳ ಸಂಖ್ಯೆಯನ್ನು ಮಿತಿಗೊಳಿಸಿ, CPU ಓವರ್ಲೋಡ್ ಅನ್ನು ತಡೆಯಲು
✅ OPCache ಸಕ್ರಿಯಗೊಳಿಸಿ, PHP ಕೋಡ್ನ ಪುನರಾವರ್ತಿತ ಪಾರ್ಸಿಂಗ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿ
✅ PHP ಕಾಲಾವಧಿಯನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ, ದೀರ್ಘಕಾಲೀನ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ತಡೆಯಲು
✅ MySQL ನಿಧಾನ ಪ್ರಶ್ನೆಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ, ಡೇಟಾಬೇಸ್ ಪ್ರಶ್ನೆ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಅತ್ಯುತ್ತಮಗೊಳಿಸಿ
✅ ಮೆಮ್ಕ್ಯಾಶ್ಡ್ ಮೆಮೊರಿಯನ್ನು ಹೊಂದಿಸಿ, CPU ಹೊರೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ
✅ Nginx ಸ್ಥಿರ ಸಂಗ್ರಹವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ, PHP ಪಾರ್ಸಿಂಗ್ ಹೊರೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು
✅ ಹೆಚ್ಚಿನ CPU ಬಳಕೆಯ PHP ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಹುಡುಕಿ, ನಿಖರವಾದ ಆಪ್ಟಿಮೈಸೇಶನ್
ಕೊನೆಯಲ್ಲಿ
ಸರ್ವರ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ಫಿಟ್ನೆಸ್ನಂತಿದೆ, ನೀವು ನಿಖರವಾದ ಹೊಂದಾಣಿಕೆಗಳನ್ನು ಮಾಡಿಕೊಳ್ಳಬೇಕು ಮತ್ತು ಗೊಂದಲ ಮಾಡಿಕೊಳ್ಳಬೇಡಿ!
ಸರಣಿ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳ ನಂತರ, ನನ್ನ ಸರ್ವರ್ CPU ಲೋಡ್ ಕಡಿಮೆಯಾಗಿದೆ 80% ರಿಂದ 15% ಕ್ಕೆ ಇಳಿಕೆ, ವೆಬ್ಸೈಟ್ ಎರಡು ಪಟ್ಟು ವೇಗವಾಗಿ ತೆರೆಯುತ್ತದೆ!
ನಿಮ್ಮ ಸರ್ವರ್ನಲ್ಲಿ ಇದೇ ರೀತಿಯ ಸಮಸ್ಯೆಗಳಿದ್ದರೆ, ಈ ವಿಧಾನಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ! 💪 💪
???? ಈಗಲೇ ಕ್ರಮ ಕೈಗೊಳ್ಳಿ! ನಿಮ್ಮ PHP-FPM ಅನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಸರ್ವರ್ ಅನ್ನು ಉಳಿಸಿ! 🚀
ಹೋಪ್ ಚೆನ್ ವೈಲಿಯಾಂಗ್ ಬ್ಲಾಗ್ ( https://www.chenweiliang.com/ ) ಹಂಚಿಕೊಂಡಿದ್ದಾರೆ "ಹೆಸ್ಟಿಯಾಸಿಪಿ ಪಿಎಚ್ಪಿ-ಎಫ್ಪಿಎಂ ಪ್ರಕ್ರಿಯೆಯು ಬಹಳಷ್ಟು ಸಿಪಿಯು ಸಂಪನ್ಮೂಲಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಅದನ್ನು ಹೇಗೆ ಅತ್ಯುತ್ತಮವಾಗಿಸುವುದು? ”, ಇದು ನಿಮಗೆ ಸಹಾಯಕವಾಗಬಹುದು.
ಈ ಲೇಖನದ ಲಿಂಕ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಸ್ವಾಗತ:https://www.chenweiliang.com/cwl-32490.html
