Tối ưu Server Web

I. Tối ưu cấu hình OpenLiteSpeed trên CyberPanel

CyberPanel sử dụng OpenLiteSpeed làm webserver, bạn cần tối ưu hóa các thông số cấu hình.

  • Tăng số lượng worker processes:
    • Vào WebAdmin Console của OpenLiteSpeed, https://192.168.0.100:7080 đăng nhập.
      Chạy lệnh sau để set lại user pass nếu quên: /usr/local/lsws/admin/misc/admpass.sh
    • Và đi đến Server Configuration > General Settings.
    • Tìm mục Worker Processes và tăng số lượng lên phù hợp với số lượng CPU của VPS 1. Nếu bạn có 4 CPU, chọn giá trị là 4.
  • Tăng connection limits:
    • Đi đến Server Configuration > Tuning.
    • Max Connections: Tăng giá trị này lên cao, ví dụ 10,000.
    • Max Keep-Alive Requests: Tăng lên 1000 để tối ưu xử lý request giữ kết nối lâu hơn.

1. Tối ưu số lượng Workers (Số tiến trình)

  • Number of Workers: Điều chỉnh số lượng workers dựa trên số CPU của VPS 1. Với 4 CPU, bạn có thể đặt Number of Workers là 4.
  • Priority: Giữ nguyên ở giá trị mặc định hoặc thử điều chỉnh một chút (khoảng từ 0 đến 5), nhưng nên thận trọng khi thay đổi.
  • CPU Affinity: Để sử dụng các CPU khác nhau cho từng worker, có thể điều chỉnh giá trị CPU Affinity theo số CPU của bạn, hoặc giữ giá trị mặc định.

2. Tối ưu Memory I/O Buffer

  • Memory I/O Buffer: Điều chỉnh buffer size dựa trên dung lượng RAM bạn có. Nếu VPS của bạn có 8GB RAM, bạn có thể tăng bộ đệm từ mặc định 60M lên một mức cao hơn, ví dụ 256M để giúp hệ thống xử lý tốt hơn.

3. Enable HTTP/2

  • Enable HTTP/2 Over Cleartext TCP: Đảm bảo bật tính năng này để cải thiện hiệu suất truyền tải dữ liệu, đặc biệt là với các trình duyệt hiện đại.

4. Auto Fix 503 Error

  • Auto Fix 503 Error: Bạn nên bật tính năng này để tự động khắc phục các lỗi 503 khi server gặp vấn đề.

5. Graceful Restart Timeout

  • Graceful Restart Timeout: Thời gian tối đa để dừng và khởi động lại một worker khi thay đổi cấu hình. Giữ giá trị mặc định 300 giây là hợp lý.

Để tối ưu hơn, bạn cần điều hướng sang các mục khác trong WebAdmin Console:

1. External App Configuration (Cấu hình ứng dụng bên ngoài như PHP)

  • Vào External App > lsphp và điều chỉnh các tham số liên quan đến PHP như số lượng Max Children để tăng khả năng xử lý nhiều yêu cầu đồng thời.

2. Tuning:

  • Chuyển đến Server Configuration > Tuning, ở đây bạn có thể điều chỉnh các tham số liên quan đến hiệu suất như số kết nối tối đa (Max Connections), số lượng yêu cầu giữ kết nối (Max Keep-Alive Requests), và thời gian sống của một kết nối Keep-Alive (Keep-Alive Timeout).

3. GZIP/Brotli Compression:

  • Đảm bảo bạn đã bật nén GZIP hoặc Brotli để giảm kích thước dữ liệu truyền tải.

II. Tối ưu hóa PHP

  • PHP Options:
    • Vào Server Configuration > External App > lsphp (hoặc phiên bản PHP bạn đang sử dụng).
    • Tại đây, tăng thông số Max Children để phù hợp với số lượng CPU. Ví dụ, đặt khoảng 20-40 để tối đa hóa số phiên xử lý đồng thời.

Số lượng Max Children phụ thuộc vào tài nguyên hệ thống, chủ yếu là RAM. Mỗi tiến trình PHP thường sử dụng từ 30MB đến 100MB RAM tùy vào kích thước ứng dụng và plugin.

Để tính toán sơ bộ:

  1. Giả sử mỗi tiến trình PHP sử dụng khoảng 50MB RAM.
  2. VPS của bạn có 8GB RAM (~8000MB), nhưng bạn cần để lại một phần RAM cho hệ điều hành và các dịch vụ khác.

Cách tính:

  • Giả sử bạn dành 6GB RAM (~6000MB) cho PHP.
  • 6000MB / 50MB (RAM trung bình mỗi tiến trình PHP) = 120.

Tuy nhiên, vì bạn đang chạy thêm các dịch vụ khác trên cùng VPS, một con số an toàn hơn sẽ là 40-60 Max Children.

  • Opcache:
    • Kiểm tra xem OPcache đã được bật chưa. OPcache giúp PHP lưu trữ mã đã biên dịch vào bộ nhớ cache, giảm thời gian xử lý:

sudo nano /usr/local/lsws/lsphp83/etc/php.d/10-opcache.ini

(Thay lsphpXX bằng phiên bản PHP của bạn).

Đảm bảo cấu hình:

III. Caching

  • Page Cache:
    • Kích hoạt plugin cache cho WordPress như LiteSpeed Cache (LScache), plugin này sẽ tương thích tốt với OpenLiteSpeed.
    • Cấu hình LiteSpeed Cache trong WordPress và bật cache động (page cache), cache đối tượng (object cache), và giảm thiểu CSS/JS.
  • Object Cache:
    • Bạn có thể sử dụng Redis hoặc Memcached để lưu cache cho các truy vấn cơ sở dữ liệu:
      • Cài đặt Redis hoặc Memcached trên VPS và kích hoạt tính năng này trong LiteSpeed Cache plugin.
      • Đảm bảo cấu hình Redis hoặc Memcached phù hợp để sử dụng tối đa RAM của VPS.

IV. GZIP và Brotli Compression

  • Kích hoạt nén GZIP và Brotli để giảm kích thước dữ liệu truyền tải, giúp tăng tốc độ tải trang.
    • Truy cập Server Configuration > Tuning và bật GZIP nén với mức tối ưu.
    • Sử dụng Brotli nếu máy chủ của bạn hỗ trợ.

 

V. Tối ưu hóa CSDL từ VPS 1 (cần trên VPS 2)

  • Tối ưu hóa các truy vấn cơ sở dữ liệu: Sử dụng plugin hoặc công cụ bên ngoài để tối ưu các truy vấn WooCommerce từ phía mã nguồn (VPS 1) để giảm tải cho MariaDB.

VI. Tối ưu hóa HTTP/2 và HTTP/3

  • Bật HTTP/2QUIC/HTTP3 trên OpenLiteSpeed để cải thiện hiệu suất giao tiếp giữa máy chủ và trình duyệt.
    • Vào Listeners và kiểm tra xem các giao thức này đã được kích hoạt chưa.

VII. Giới hạn tài nguyên không cần thiết

  • Disable Unnecessary Modules: Vô hiệu hóa các module PHP không cần thiết để giải phóng tài nguyên.
    • Truy cập PHP Settings và loại bỏ các module mà bạn không sử dụng, ví dụ: XMLRPC nếu không cần thiết.

VIII. Monitoring và tối ưu liên tục

  • Sử dụng công cụ giám sát như htop hoặc lscpu để theo dõi hiệu suất CPU, RAM của VPS.
  • Dùng plugin Query Monitor trên WordPress để phát hiện các truy vấn chậm và tối ưu hóa thêm.
###############################

 

Tối ưu cho MariaDB 10.6 16GB ram trên AApanel

 

mysqldManage > Optimization > Chọn nức dung lượng RAM để tối ưu cho nhanh hoặc Tùy chỉnh ở dưới.

 

Với 16GB RAM, bạn có thể tùy chỉnh để giúp lưu trữ dữ liệu trong bộ nhớ và tăng tốc độ truy vấn:

innodb_buffer_pool_size = 12G        # (12GB dành cho bộ nhớ đệm dữ liệu, bạn vẫn để lại một phần RAM cho hệ điều hành và các dịch vụ khác).
innodb_log_file_size = 1G            # Tăng giá trị của InnoDB Log File để tối ưu tốc độ ghi dữ liệu
innodb_log_buffer_size = 256M        # Với hệ thống nhiều bộ nhớ, bạn có thể tăng kích thước bộ đệm log để cải thiện hiệu suất ghi
tmp_table_size = 512M                # 
max_heap_table_size = 512M           # Để xử lý các bảng tạm lớn hơn, bạn có thể tăng kích thước của tmp_table_size và max_heap_table_size
max_connections = 200                # Nếu bạn không cần hỗ trợ nhiều kết nối đồng thời (vì lượng truy cập thấp), bạn có thể giảm giá trị này để tiết kiệm tài nguyên
query_cache_size = 0                 # 
query_cache_type = 0                 # WooCommerce thường không hoạt động tốt với query cache, đặc biệt khi có nhiều thay đổi dữ liệu, vì thế bạn nên vô hiệu hóa query cache
thread_cache_size = 128              # Bạn có thể giữ nguyên giá trị thread_cache_size = 128 nếu hệ thống có tải trung bình

Trong file cấu hình my.cnf, bạn có thể thêm hoặc điều chỉnh các tham số sau vào sau [mysqld] :

[mysqld]
innodb_flush_method = O_DIRECT         # Giúp giảm độ trễ ghi vào đĩa
innodb_flush_neighbors = 0              # Cho phép ghi vào SSD không cần đợi, tăng tốc độ ghi
innodb_io_capacity = 1000               # Tăng số lượng IO tối đa mà InnoDB có thể thực hiện
innodb_io_capacity_max = 2000           # Tăng giới hạn tối đa cho IO

 

# Sau khi thay đổi cấu hình, hãy khởi động lại MariaDB để áp dụng:

$ sudo systemctl restart mariadb

 

 

 

 

 

 

 

 

Lên đầu trang