Nếu bạn đang chạy một trang web nhận được nhiều lưu lượng truy cập, điều cần thiết là phải tối ưu hóa cấu hình máy chủ web Apache của bạn để đảm bảo hiệu suất và tính khả dụng tối đa. Trong bài viết này, Long Vân sẽ cung cấp cho bạn một số mẹo và ví dụ về cách tối ưu hóa cấu hình Apache của bạn cho các trang web có lưu lượng truy cập cao.
I. Sử dụng module MPM phù hợp
Apache sử dụng Multi-Processing Modules (MPM) để xử lý các yêu cầu của client. MPM chịu trách nhiệm tạo các tiến trình hoặc luồng con để xử lý các yêu cầu đến. Có ba module MPM có sẵn trong Apache: prefork
, worker
và event
.
- MPM
prefork
là module MPM lâu đời nhất và ổn định nhất. Nó tạo ra một tiến trình cho mỗi kết nối, điều này có thể dẫn đến việc sử dụng nhiều tài nguyên. - MPM
worker
tạo nhiều luồng cho mỗi tiến trình, có thể cải thiện hiệu suất và giảm mức sử dụng tài nguyên. - MPM
event
tương tự nhưworker
MPM, nhưng nó bổ sung cơ chế thông báo sự kiện không đồng bộ để cải thiện hiệu suất hơn nữa.
Để tối ưu hóa cấu hình Apache của bạn để có lưu lượng truy cập cao, chúng tôi khuyên bạn nên sử dụng module worker
hoặc event
MPM. Bạn có thể kích hoạt các mô-đun này bằng cách bỏ # các dòng sau trong tệp cấu hình Apache của mình:
LoadModule mpm_worker_module modules/mod_mpm_worker.so
hoặc
LoadModule mpm_event_module modules/mod_mpm_event.so
II. Tăng số lượng tiến trình/luồng con
Để xử lý khối lượng lớn yêu cầu gửi đến, bạn cần tăng số lượng tiến trình hoặc luồng con mà Apache có thể tạo. Số lượng tiến trình hoặc luồng con bạn nên tạo tùy thuộc vào lượng bộ nhớ và tài nguyên CPU có sẵn trên máy chủ của bạn.
Để tăng số lượng tiến trình hoặc luồng con, bạn cần sửa đổi các giá trị StartServers
, MaxClients
, MaxSpareServers
và MinSpareServers
trong tệp cấu hình Apache của mình.
StartServers
là số tiến trình con được khởi chạy khi Apache khởi động. MaxClients
là số lượng kết nối đồng thời tối đa mà Apache có thể xử lý. MaxSpareServers
là số tiến trình con nhàn rỗi tối đa mà Apache duy trì. MinSpareServers
là số tiến trình con nhàn rỗi tối thiểu mà Apache duy trì.
Ví dụ: để đặt StartServers
thành 10, MaxClients
thành 500, MaxSpareServers
thành 200 và MinSpareServers
thành 10, bạn có thể thêm các dòng sau vào tệp cấu hình Apache của mình:
StartServers 10
MaxClients 500
MaxSpareServers 200
MinSpareServers 10
Bạn cũng nên cân nhắc việc đặt ServerLimit
có cùng giá trị với MaxClients
. Điều này đảm bảo rằng Apache không tạo ra nhiều tiến trình con hơn mức cần thiết.
Một tham số quan trọng khác có thể giúp tăng số lượng tiến trình/luồng con trong Apache là giá trị MaxRequestWorkers
. Giá trị này chỉ định số lượng yêu cầu đồng thời tối đa mà Apache có thể xử lý.
Theo mặc định, MaxRequestWorkers
giá trị được đặt thành 256. Tuy nhiên, giá trị này có thể tăng lên để cho phép Apache xử lý đồng thời nhiều yêu cầu hơn.
Để điều chỉnh MaxRequestWorkers
giá trị, bạn có thể thêm dòng sau vào tệp cấu hình Apache của mình:
MaxRequestWorkers 500
Trong ví dụ trên, chúng tôi đã đặt MaxRequestWorkers
giá trị thành 500, có nghĩa là Apache có thể xử lý tối đa 500 yêu cầu đồng thời.
Điều quan trọng cần lưu ý là việc tăng MaxRequestWorkers
giá trị cũng làm tăng dung lượng bộ nhớ được Apache sử dụng. Do đó, bạn nên đảm bảo rằng máy chủ của bạn có đủ bộ nhớ để xử lý các yêu cầu bổ sung.
III. Kích hoạt KeepAlive
Tính năng KeepAlive cho phép client sử dụng lại cùng một kết nối với máy chủ cho nhiều yêu cầu, giảm chi phí tạo kết nối mới cho mỗi yêu cầu. Kích hoạt KeepAlive có thể cải thiện đáng kể hiệu suất trang web của bạn.
Để bật KeepAlive, bạn cần đặt KeepAlive
thành On
. Bạn cũng nên đặt KeepAliveTimeout
thành một giá trị phù hợp với trang web của mình. Ví dụ: để đặt thời gian chờ KeepAlive thành 5 giây, bạn có thể thêm các dòng sau vào tệp cấu hình Apache của mình:
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100
IV. Kích hoạt bộ nhớ đệm
Bộ nhớ đệm là quá trình lưu trữ dữ liệu được truy cập thường xuyên trong bộ nhớ hoặc trên đĩa, giảm số lượng yêu cầu cần được máy chủ xử lý. Kích hoạt bộ nhớ đệm có thể cải thiện đáng kể hiệu suất trang web của bạn, đặc biệt đối với nội dung tĩnh.
Apache cung cấp một số module bộ nhớ đệm, chẳng hạn như mod_cache
và mod_disk_cache
. Để bật bộ nhớ đệm, bạn cần tải module bộ nhớ đệm thích hợp và định cấu hình nó trong tệp cấu hình Apache của bạn. Ví dụ: để bật bộ nhớ đệm nội dung tĩnh bằng cách sử dụng mod_disk_cache
, bạn có thể thêm các dòng sau vào tệp cấu hình Apache của mình:
LoadModule cache_module modules/mod_cache.so
LoadModule disk_cache_module modules/mod_disk_cache.so
CacheEnable disk /
CacheRoot /var/cache/apache2/mod_disk_cache
CacheDirLevels 2
CacheDirLength 1
Những dòng này kích hoạt các module mod_cache
và mod_disk_cache
và định cấu hình bộ nhớ đệm cho thư mục gốc ( /
) bằng bộ đệm đĩa. Lệnh này CacheRoot
chỉ định thư mục nơi nội dung được lưu trong bộ đệm sẽ được lưu trữ, đồng thời CacheDirLevels
và CacheDirLength
kiểm soát cấu trúc phân cấp thư mục bộ đệm.
V. Sử dụng tính năng nén dữ liệu trong Apache
Nén là quá trình giảm kích thước dữ liệu được gửi qua mạng bằng cách loại bỏ thông tin dư thừa. Việc kích hoạt tính năng nén có thể làm giảm đáng kể lượng dữ liệu cần truyền đi, cải thiện hiệu suất trang web của bạn.
Apache cung cấp một module nén có tên mod_deflate
. Để bật tính năng nén, bạn cần tải mod_deflate
module và định cấu hình nó trong tệp cấu hình Apache của mình.
Ví dụ: để bật tính năng nén nội dung dựa trên văn bản, bạn có thể thêm các dòng sau vào tệp cấu hình Apache của mình:
LoadModule deflate_module modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
Những dòng này kích hoạt mod_deflate
mô-đun và chỉ định loại nội dung cần được nén.
VI. Hạn chế quyền truy cập vào tài nguyên
Việc hạn chế quyền truy cập vào tài nguyên có thể giúp giảm tải cho máy chủ và cải thiện hiệu suất trang web của bạn. Bạn có thể giới hạn quyền truy cập vào tài nguyên bằng cách sử dụng các lệnh Order
, Allow
và Deny
trong tệp cấu hình Apache của mình.
Ví dụ: để giới hạn quyền truy cập vào thư mục có tên admin
, bạn có thể thêm các dòng sau vào tệp cấu hình Apache của mình:
<Directory /var/www/html/admin>
Order deny,allow
Deny from all
Allow from 192.168.0.0/24
</Directory>
Những dòng này chỉ định rằng quyền truy cập vào admin
thư mục sẽ bị từ chối đối với tất cả các máy khách ngoại trừ những máy khách trong 192.168.0.0/24
mạng con.
VII. Tối ưu hóa tài nguyên máy chủ
Ngoài việc tối ưu hóa Apache, bạn cũng có thể tối ưu hóa tài nguyên máy chủ để đảm bảo hiệu suất và tính khả dụng tối đa cho trang web của mình.
1. Tăng giới hạn bộ nhớ và đặt Opcache
Giới hạn bộ nhớ mặc định của tập lệnh PHP có thể không đủ để xử lý khối lượng lớn yêu cầu gửi đến. Bạn có thể tăng giới hạn bộ nhớ bằng cách sửa đổi memory_limit
lệnh trong tệp cấu hình PHP của mình.
Ngoài ra, bạn cũng có thể kích hoạt Opcache, đây là bộ đệm mã byte cho các tập lệnh PHP. Opcache lưu trữ bytecode tập lệnh được biên dịch sẵn trong bộ nhớ, giảm chi phí phân tích cú pháp và biên dịch tập lệnh cho mọi yêu cầu.
Cài đặt OPCache
# For CentOS, RedHat and Alma Linux use this command :
$ sudo yum install php-opcache
# For Ubuntu and Debian use this command :
$ sudo apt-get install php-opcache
Sau khi quá trình cài đặt hoàn tất, hãy khởi động lại Apache để áp dụng các thay đổi:
$ sudo systemctl restart apache2
Đó là nó! OPcache bây giờ sẽ được cài đặt và kích hoạt trên hệ thống Ubuntu của bạn. Bạn có thể xác minh rằng nó đã được bật bằng cách kiểm tra cấu hình PHP của bạn.
2. Thiết lập tệp Hoán đổi hoặc phân vùng Hoán đổi
Nếu máy chủ của bạn hết bộ nhớ, nó có thể bắt đầu sử dụng đĩa cứng làm bộ nhớ ảo, điều này có thể làm giảm đáng kể hiệu suất trang web của bạn. Bạn có thể tránh điều này bằng cách thiết lập tệp Hoán đổi hoặc phân vùng Hoán đổi, cung cấp thêm bộ nhớ ảo khi bộ nhớ vật lý cạn kiệt.
Để thiết lập tệp Hoán đổi, bạn có thể sử dụng các lệnh sau:
$ sudo fallocate -l 1G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
Các lệnh này tạo tệp Hoán đổi 1GB, đặt quyền cho tệp, định dạng tệp là Hoán đổi và bật Hoán đổi.
3. Kích hoạt tính năng nén GZIP
Kích hoạt tính năng nén GZIP có thể giảm kích thước dữ liệu được truyền qua mạng, cải thiện hiệu suất trang web của bạn. Bạn có thể kích hoạt tính năng nén GZIP bằng cách tải deflate
module trong Apache và định cấu hình nó trong tệp cấu hình Apache của bạn.
Để bật tính năng nén GZIP, bạn có thể sử dụng các lệnh sau:
$ sudo a2enmod deflate
$ sudo service apache2 restart
Các lệnh này kích hoạt deflate
mô-đun trong Apache và khởi động lại dịch vụ Apache. Sau khi deflate
mô-đun được bật, Apache sẽ tự động nén nội dung bằng GZIP khi máy khách hỗ trợ nó.
Như vậy Long Vân đã hướng dẫn Quý khách tối ưu cấu hình Apache cho website có lưu lượng cao. Chúc Quý khách thành công.