Thư mục bài viết
Máy chủ HestiaCP gặp sự cố tăng đột biến CPU? Hướng dẫn đầy đủ về tối ưu hóa quy trình PHP-FPM!

CPU máy chủ của bạn có liên tục hoạt động ở mức 100% không? Quạt có quay điên cuồng không? Trang web của bạn tải chậm không? Thủ phạm có thể là php-fpm!
Tôi mới phát hiện ra gần đây chenweiliang.com Nhóm PHP này php-fpm Quá trình này ngốn hết CPU và máy chủ bị sập!
Để khôi phục lại máy chủ, tôi đã thử một loạt các phương pháp tối ưu hóa và cuối cùng đã thành công trong việc giảm mức sử dụng CPU.
Giờ thì hãy cùng chia sẻ hướng dẫn tối ưu hóa hiệu quả này nhé ! 🚀
1. Giới hạn số lượng tiến trình php-fpm
Các thiết lập mặc định của php-fpm có thể tạo ra số lượng tiến trình không giới hạn , gây quá tải CPU máy chủ.
Để tối ưu hóa, chúng ta có thể sửa đổi các tham số quản lý quy trình.
打开 php-fpm Tệp cấu hình:
sudo nano /etc/php/*/fpm/pool.d/www.conf
- *Đổi sang phiên bản PHP của bạn, chẳng hạn như PHP8.3, và đổi thành:
/etc/php/8.3/fpm/pool.d/www.conf
Truy vấn phiên bản PHP được thiết lập bởi HestiaCP
v-list-web-domain user domain.com
Ví dụ:
v-list-web-domain abc chenweiliang.com
Trong kết quả đầu ra, bạn sẽ thấy nội dung tương tự như sau:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
Điều này cho thấy trang web sử dụng PHP 8.3.
Xác định vị trí và sửa đổi các thông số sau:
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 后自动退出
Sau đó khởi động lại php-fpm Để thực hiện có hiệu quả:
sudo systemctl restart php-fpm
✅Tác dụng : Giới hạn số lượng tiến trình để ngăn php-fpm tiêu thụ quá nhiều tài nguyên CPU.
2. Bật OPCache (để cải thiện hiệu suất PHP)
PHP phân tích lại mã mỗi khi nó được thực thi, điều này gây lãng phí tài nguyên.
Giải pháp là gì? Bật OPCache và lưu trữ mã PHP của bạn!
biên tập php.ini tài liệu:
sudo nano /etc/php/*/fpm/php.ini
Thêm hoặc sửa đổi những nội dung sau:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 禁用实时检测,提高性能
Sau khi lưu, hãy khởi động lại tiến trình PHP:
sudo systemctl restart php8.3-fpm
✅Tác dụng : Giảm thiểu việc lặp lại thao tác phân tích cú pháp mã PHP, giảm tải CPU và cải thiện hiệu quả thực thi.
3. Giới hạn thời gian thực thi tối đa của các tập lệnh PHP
Nếu một tập lệnh PHP chạy quá lâu, tài nguyên CPU sẽ liên tục bị chiếm dụng.
Việc thiết lập khoảng thời gian chờ hợp lý có thể ngăn chặn các tiến trình "cứng đầu" chiếm dụng máy chủ trong thời gian dài.
打开 php.ini tài liệu:
sudo nano /etc/php/*/fpm/php.ini
Sửa đổi các thông số sau:
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
Sau đó khởi động lại tiến trình PHP:
sudo systemctl restart php-fpm
✅Tác dụng : Ngăn chặn các tiến trình PHP chạy trong thời gian dài, giảm lãng phí tài nguyên CPU.
4. Kiểm tra MySQL Truy vấn chậm
PHP-FPM có tải trọng cao,Có thể là do truy vấn SQL chậm!
开启 MySQL Nhật ký truy vấn chậm, tìm ra các câu lệnh SQL đang bị cản trở.
Chỉnh sửa tệp cấu hình 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 秒的查询会被记录
Sau khi lưu, khởi động lại MySQL:
sudo systemctl restart mysql
Sau đó sử dụng mysqldumpslow Phân tích các truy vấn chậm:
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log
✅Kết quả : Xác định các truy vấn SQL tốn nhiều thời gian, tối ưu hóa hiệu suất cơ sở dữ liệu và gián tiếp giảm tải cho PHP.
5. Hạn chế Ghi nhớ Sử dụng tài nguyên
Nhìn vào danh sách quy trình, tôi thấy Tiến trình Memcached chiếm 24.8% CPU!
Có thể là do dung lượng bộ nhớ đệm quá lớn, khiến CPU phải xử lý một lượng lớn dữ liệu.
调整 memcached Cấu hình:
sudo nano /etc/memcached.conf
修改:
-m 32 # 限制 Memcached 内存使用 32MB
Sau đó khởi động lại:
sudo systemctl restart memcached
✅Tác dụng : Giảm tải CPU cho tiến trình Memcached và cải thiện hiệu quả bộ nhớ đệm.
6. Cho phép Nginx lưu trữ bộ nhớ đệm các tài nguyên tĩnh
Nhiều lần, PHP xử lý các yêu cầu có chứa một số lượng lớn CSS, JS, hình ảnhnhưng những tệp này không cần phân tích cú pháp PHP chút nào!
Giải pháp là gì? Sử dụng Nginx để lưu trữ tài nguyên tĩnh!
Chỉnh sửa cấu hình Nginx:
sudo nano /etc/nginx/nginx.conf
添加:
location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
expires max;
log_not_found off;
}
Sau khi lưu, khởi động lại Nginx:
sudo systemctl restart nginx
✅Tác dụng : Giảm số lần PHP xử lý các tập tin tĩnh, từ đó giảm mức sử dụng CPU.
7. Tìm các tập lệnh PHP sử dụng nhiều CPU nhất
Nếu CPU vẫn quá cao sau khi tối ưu hóa, có thể một số tập lệnh PHP đang chạy quá mức.
Sử dụng lệnh sau để tìm ra tiến trình PHP sử dụng CPU nhiều nhất:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
Nếu bạn thấy một tập lệnh PHP chiếm quá nhiều CPU, bạn có thể tắt trực tiếp tập lệnh đó:
kill -9 PID
✅Kết quả : Xác định chính xác các "phần tử gây hại" và ngăn chặn các tiến trình PHP chiếm dụng CPU trong thời gian dài.
Tóm tắt: 7 cách tối ưu hóa PHP-FPM
✅ Giới hạn số lượng tiến trình PHP-FPM, để ngăn ngừa tình trạng quá tải CPU
✅ Bật OPCache, giảm việc phân tích cú pháp lặp lại của mã PHP
✅ Thiết lập thời gian chờ PHP, để ngăn chặn hoạt động lâu dài
✅ Kiểm tra các truy vấn chậm của MySQL, tối ưu hóa hiệu suất truy vấn cơ sở dữ liệu
✅ Điều chỉnh bộ nhớ Memcached, giảm gánh nặng cho CPU
✅ Bật bộ nhớ đệm tĩnh Nginx, giảm gánh nặng phân tích cú pháp PHP
✅ Tìm các tập lệnh PHP sử dụng CPU cao, tối ưu hóa chính xác
Kết luận
Tối ưu hóa máy chủ giống như tập thể dục, bạn cần phải điều chỉnh chính xác và không được lơ là!
Sau một loạt các tối ưu hóa, tải CPU máy chủ của tôi đã giảm từ 80% xuống còn 15%, trang web mở nhanh gấp đôi!
Nếu máy chủ của bạn gặp vấn đề tương tự, hãy thử các phương pháp sau! 💪
👉Hãy hành động ngay! Tối ưu hóa PHP-FPM và cứu máy chủ của bạn! 🚀
Hi vọng bài viết "Tiến trình php-fpm của HestiaCP tiêu tốn nhiều tài nguyên CPU, làm thế nào để tối ưu hóa?" được chia sẻ trên blog của Chen Weiliang ( https://www.chenweiliang.com/ ) sẽ hữu ích cho bạn.
Bạn có thể thoải mái chia sẻ liên kết bài viết này: https://www.chenweiliang.com/cwl-32490.html
