Quá trình HestiaCP php-fpm chiếm rất nhiều tài nguyên CPU. Làm thế nào tôi có thể tối ưu hóa nó?

HestiaCP CPU máy chủ tăng đột biến? Hướng dẫn đầy đủ về cách tối ưu hóa quy trình PHP-FPM!

Quá trình HestiaCP php-fpm chiếm rất nhiều tài nguyên CPU. Làm thế nào tôi có thể tối ưu hóa nó?

CPU của máy chủ luôn ở mức 100% phải không? Quạt quay dữ dội? Tốc độ mở trang web có chậm lại 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.

Bây giờ, chúng ta hãy chia sẻ điều này Hướng dẫn tối ưu hóa hiệu quả! 🚀

1. Giới hạn số lượng tiến trình php-fpm

php-fpm thiết lập mặc định có thểVô hạnQuá trình này được tạo ra không kiểm soát được, khiến CPU máy chủ bị quá tải.

Để 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 có nghĩa là 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

hiệu ứng: Giới hạn số lượng tiến trình để ngăn php-fpm chiếm 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

hiệu ứng: Giảm việc phân tích cú pháp mã PHP nhiều lần, giảm gánh nặng cho 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 脚本最多执行 30max_input_time = 30  # 处理输入数据最多 30memory_limit = 256M  # 限制单个 PHP 进程的内存占用

Sau đó khởi động lại tiến trình PHP:

sudo systemctl restart php-fpm

hiệu ứng: Ngăn chặn các tiến trình PHP chạy trong thời gian dài và 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

hiệu ứng: Tìm ra các truy vấn SQL tốn 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 PHP.

5. Giới hạn sử dụng tài nguyên Memcached

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

hiệu ứng: Giảm gánh nặng CPU của 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

hiệu ứng: Giảm số lần PHP xử lý các tệp tĩnh và 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

hiệu ứng:Xác định chính xác các "con sâu" và ngăn chặn 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à bảo vệ máy chủ của bạn! 🚀

Hy vọng Chen Weiliang Blog ( https://www.chenweiliang.com/ ) đã chia sẻ "Tiến trình php-fpm của HestiaCP chiếm rất nhiều tài nguyên CPU, làm thế nào để tối ưu hóa nó? ”, điều này có thể hữu ích với bạn.

Chào mừng bạn đến chia sẻ liên kết của bài viết này:https://www.chenweiliang.com/cwl-32490.html

Để khám phá thêm nhiều mẹo ẩn🔑, vui lòng tham gia kênh Telegram của chúng tôi!

Chia sẻ và thích nếu bạn thích nó! Những chia sẻ và lượt thích của bạn là động lực tiếp tục của chúng tôi!

 

发表 评论

Địa chỉ email của bạn sẽ không được công bố. 项 已 * 标注

Di chuyển về đầu trang