Tối ưu hóa hiệu suất Apache2

Nhiều người sử dụng Apache2 làm máy chủ web. Tuy nhiên, ít người nghĩ đến việc tối ưu hóa hiệu suất của nó, điều này ảnh hưởng trực tiếp đến tốc độ tải trang của trang, tốc độ xử lý tập lệnh (đặc biệt là php), cũng như tăng tải CPU và tăng dung lượng RAM được sử dụng.

Vì vậy, hướng dẫn sau đây sẽ giúp ích cho người mới bắt đầu (và không chỉ) người dùng.
Tất cả các ví dụ bên dưới đều được sử dụng trên Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.

Итак, начнем.

1. Vô hiệu hóa các mô-đun không sử dụng

Phương pháp đầu tiên chỉ đơn giản là vô hiệu hóa các mô-đun mà bạn không sử dụng:

Danh sách các mô-đun hiện đang được sử dụng có thể được xem bằng lệnh:

apache2ctl -M

Để tắt mô-đun, sử dụng lệnh:

a2dismod *название модуля*

Theo đó, để kích hoạt mô-đun, hãy sử dụng lệnh:

a2enmod *название модуля*

Xin lưu ý rằng khi sử dụng a2dismod, tên của mô-đun phải được viết mà không có từ mô-đun.

Ví dụ: nếu bạn đang ở đầu ra của lệnh apache2ctl -M cái cưa proxy_module, sau đó để tắt nó bạn cần sử dụng lệnh - proxy a2dismod

Các mô-đun tải hệ thống nhiều nhất (theo kinh nghiệm cá nhân) là:

  • PHP, Ruby, Perl và các mô-đun khác cho các ngôn ngữ kịch bản khác nhau
  • SSL
  • Rewrite
  • CGI

Vì vậy trong trường hợp bạn không cần những mô-đun này, tôi khuyên bạn nên tắt các mô-đun này.

Ngoài ra, sau khi tắt bất kỳ mô-đun nào, tôi khuyên bạn nên sử dụng lệnh - cấu hình apache2ctl, nó sẽ kiểm tra cấu hình của các trang web được sử dụng và nếu bất kỳ mô-đun bị vô hiệu hóa nào cần thiết cho chúng thì nó sẽ phát sinh lỗi.

2. Thay đổi MPM (Mô-đun đa xử lý) và sử dụng php-fpm

Theo mặc định, sau khi cài đặt, apache2 sử dụng MPM Prefork (1 thread trên 1 kết nối), điều này làm giảm đáng kể hiệu suất nhưng đồng thời cải thiện tính ổn định và bảo mật.

Nhưng để tối ưu hóa hiệu suất, tôi khuyên bạn nên sử dụng MPM Worker, cho phép bạn sử dụng nhiều luồng trên mỗi kết nối.

Để kích hoạt nó, chúng tôi sử dụng các lệnh sau:

a2dismod mpm_prefork  //Отключаем prefork
a2dismod php7.3  //Отключаем модуль php, который зависит от prefork
a2enmod mpm_worker  //Включаем worker

Tuy nhiên, khi sử dụng Worker bạn có thể gặp phải vấn đề vì... Mô-đun php7.3 phụ thuộc vào mô-đun Prefork.

Để giải quyết vấn đề này, hãy cài đặt mô-đun php7.3-fpm, mô-đun này sẽ được sử dụng để chạy các tập lệnh PHP:

apt-get update && apt-get install php7.3-fpm  //Устанавливаем
systemctl enable php7.3-fpm && systemctl start php7.3-fpm  //Добавляем в автозагрузку и запускаем
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf  //Включаем модуль и конфиг для него

Điều đáng chú ý là việc sử dụng php-fpm cũng sẽ làm giảm dung lượng RAM được sử dụng bởi tiến trình Apache2 và tăng tốc một chút tốc độ xử lý các tập lệnh PHP.

3. Kết luận

Do đó, với những hành động đơn giản như vậy, chúng tôi đã có thể tối ưu hóa hiệu suất và giảm tải cho máy (trong trường hợp này là RPI3).

Tất nhiên, có hàng trăm tùy chọn tối ưu hóa khác, như bật tính năng nén (thực sự hữu ích nhưng hầu hết đều đã được bật theo mặc định), thay đổi cài đặt MPM (tệp cấu hình), tắt HostnameLookups, v.v., nhưng trong bài viết này tôi đã cố gắng phản ánh Đây là những điểm đã giúp tôi nhiều nhất và tôi hy vọng sẽ giúp được những người khác.

Nguồn: www.habr.com

Thêm một lời nhận xét