Sau khi chọn mẫu "phpfcgid" cho dịch vụ web VestaCP , một lượng lớn tiến trình PHP-CGI nhanh chóng làm cạn kiệt bộ nhớ.
- Về cơ bản, tôi đã hết bộ nhớ trong vài giờ sau khi khởi động lại máy chủ.
- Quy trình PHP-CGI nhàn rỗi trước đó không bị giết và một quy trình chạy gần 1 quy trình con, tiêu tốn ít nhất 20M bộ nhớ.
Được sử dụng trong SSH htop lệnh (yêu cầu cài đặt), bạn có thể xem trạng thái này ▼

Nếu bạn nhận được thông báo lỗi "-bash: htop: command not found" khi bạn sử dụng lệnh htop, vui lòng xem hướng dẫn này để biết giải pháp ▼
Số lượng lớn các tiến trình PHP-CGI khiến bộ nhớ nhanh chóng bị cạn kiệt. Vấn đề nằm ở chỗ VestaCP sử dụng cấu hình chưa được tối ưu hóa trong mẫu phpfcgid của CentOS .
- VestaCP trong mẫu phpfcgid, đặt 1 quy trình PHP-CGI để chạy tối đa 20 quy trình con.
Yêu cầu /usr/local/vesta/data/templates/web/httpd/phpfcgid.sh Dòng 13 của tệp:
export PHP_FCGI_CHILDREN=20
Tuy nhiên, thiết lập như vậy vi phạm cảnh báo của Apache trong tài liệu quản lý quy trình con PHP:
Chức năng quản lý tiến trình con của PHP ( PHP_FCGI_CHILDREN ) luôn phải được tắt bằng mod_fcgid, vì mod_fcgid chỉ định tuyến một yêu cầu tại một thời điểm đến các tiến trình ứng dụng mà nó đã tạo ra; do đó, bất kỳ tiến trình con nào được PHP tạo ra sẽ không được sử dụng hiệu quả. (Ngoài ra, các tiến trình con của PHP có thể không được kết thúc đúng cách.) Theo mặc định, và với thiết lập biến môi trường PHP_FCGI_CHILDREN=0 , chức năng quản lý tiến trình con của PHP bị tắt.
Bởi vì trong mô-đun mod_fcgid của Apache, quy trình PHP-CGI chỉ có thể đáp ứng một yêu cầu và chạy tại một thời điểm, quy trình con PHP-CGI rất kém hiệu quả.
Do đó, các cài đặt quản lý quy trình con PHP nên được tắt trực tiếp ▼
PHP_FCGI_CHILDREN=0
Đồng thời, nếu bạn đã có một máy chủ ảo được tạo, bạn cần phải sửa đổi các tệp cấu hình của tất cả các trang web ▼
/home/用户名/web/域名/cgi-bin/fcgi-starter
Sau khi mở tệp cấu hình fcgi-starter, hãy chèn phần sau ▼
export PHP_FCGI_CHILDREN=20
Được sửa đổi thành ▼
export PHP_FCGI_CHILDREN=0
- Sau khi sửa đổi, quản lý quy trình con PHP sẽ bị tắt ở chế độ mod_fcgid.
- Quy trình PHP-CGI sẽ không sinh ra các quy trình con nữa, điều này có thể tiết kiệm rất nhiều bộ nhớ.
Ngoài ra, VestaCP không đặt cơ chế kết thúc cho các quy trình không hoạt động:
- Tất cả các quy trình PHP-CGI mới được thực thi sẽ tiếp tục sử dụng bộ nhớ cho đến khi hệ thống được khởi động lại.
Để khắc phục điều này, chỉ cần thêm tệp cấu hình mod_fcgid /etc/httpd/conf.d/fcgid.conf Thêm các cài đặt sau trong ▼
FcgidIdleTimeout 120
- Đặt Apache để tự động giết các quy trình PHP-CGI không hoạt động trong 2 phút (120 giây).
Sau khi thiết lập hoàn tất, hãy khởi động lại dịch vụ Apache ▼
service httpd restart
Sau khi dịch vụ được khởi động lại, hàng trăm quy trình PHP-CGI đã được hiển thị trước đó trong HTOP sẽ không còn được hiển thị nữa.
Thông thường, một tiến trình PHP-CGI dành cho một người dùng Vesta CP sẽ tiêu tốn từ 30 đến 40 MB bộ nhớ, con số này là quá đủ đối với một máy chủ Linux.
Do đó, việc tối ưu hóa cấu hình nội dung và mẫu của Vesta là rất quan trọng đối với những người làm tiếp thị trực tuyến muốn đạt được thành công trong SEO .
Bạn có thể xem các hướng dẫn sau trên bảng VestaCP ▼
Hy vọng bài viết "Tối ưu hóa cấu hình mẫu VestaCP phpfcgid cho lỗi 'Nhiều tiến trình, cạn kiệt bộ nhớ 500'" đượ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-735.html



