Đừng quên chạy lệnh service nginx restart sau khi thay đổi các file cấu hình của NGINX.
I - Tối ưu Nginx
1. Cấu hình worker_procresses và worker_connections
Worker_processes nghĩa là tổng số processes tối đa mà NGINX được phép sử dụng. Thường thì mặc định NGINX sẽ thiết lập sử dụng 1 process như sau:
- Mã: Chọn tất cả
worker_processes 1;
Nhưng tốt hơn hết, bạn nên thiết lập số lượng process ngang bằng với số lượng CPU mà bạn đang có. Để xem số lượng CPU có trên VPS, bạn sử dụng lệnh nproc.
- Mã: Chọn tất cả
[root@lempstack ~]# nproc
1
Còn worker_connections nghĩa là số lượng kết nối được phép sử dụng cho mỗi process. Bạn nên đặt con số này là khoảng từ 1024 đến 5000 là đẹp.
- Mã: Chọn tất cả
worker_connections 2048;
2. Tăng dung lượng request gửi đến server
Nếu bạn sử dụng WordPress thì mỗi khi đăng bài, gửi comment,…đều sẽ gửi một số lượng request nhất định đến server, trong nhiều trường hợp có thể bạn sẽ gửi một request khá lớn như bài viết quá dài chẳng hạn thì bạn nên đặt thêm đoạn sau vào giữa cặp http {...} trong nginx.conf:
- Mã: Chọn tất cả
client_body_buffer_size 256k;
client_body_in_file_only off;
client_body_timeout 60s;
client_header_buffer_size 64k;
client_header_timeout 20s;
client_max_body_size 10m;
connection_pool_size 512;
Trường hợp bạn vẫn gặp lỗi “Request Entity Too Large” thì nên tăng cái client_max_body_size lên.
3. Bật Gzip
Gzip là phương thức nó sẽ nén lại các dữ liệu mà trình duyệt nhận từ server rồi sau đó mới gửi đến người dùng. Chẳng hạn tổng dung lượng của website bạn là 1.3MB nhưng nếu bật Gzip lên thì dung lượng website chỉ còn khoảng 40kb là cùng, một con số ấn tượng đúng không.
Chèn đoạn sau vào giữa cặp http {…}
- Mã: Chọn tất cả
gzip on;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
gzip_static on;
gzip_min_length 1400;
gzip_buffers 32 8k;
gzip_http_version 1.0;
gzip_comp_level 5;
gzip_proxied any;
gzip_types text/plain text/css text/xml application/javascript application/x-javascript application/xml application/xml+rss application/ecmascript application/json image/svg+xml;
Đó là 3 cách tùy chỉnh NGINX khá đơn giản nhưng hiệu quả rất lớn mà bạn có thể làm. Nhìn chung cấu hình như vậy là đã đủ để chạy một website WordPress với kha khá traffic rồi.
Hôm cuối tuần do mình hơi đuối nên chỉ viết được đến phần 7, bây giờ mình sẽ viết tiếp một phần khá quan trọng để làm cho VPS bạn không phải quá tải CPU do các process của PHP-FPM tạo ra, đó là tùy chỉnh lại các thông tin cần thiết.
Mặc khác, mặc định database của bạn khi cài vào sẽ không hỗ trợ lưu cache các truy vấn từ database nên điều đó có thể sẽ làm website bạn hơi chậm.
II - Tối ưu PHP-FPM
Để tối ưu PHP-FPM, bạn hãy mở file /etc/php.ini ra và tìm:
- Mã: Chọn tất cả
;session.save_path = "/tmp"
Thay thành
- Mã: Chọn tất cả
session.save_path = "/var/lib/php/session"
Sau đó cấp quyền cho user đang thực thi PHP sở hữu thư mục này. Nếu bạn không làm phần 7 thì nó sẽ là nginx:nginx
- Mã: Chọn tất cả
chown -R nginx:nginx /var/lib/php/session
Tiếp tục mở file /etc/php-fpm.d/www.conf, tìm:
- Mã: Chọn tất cả
pm = dynamic
Thay thành
- Mã: Chọn tất cả
pm = ondemand
Tìm
- Mã: Chọn tất cả
pm.max_children = 50
Thay thành
- Mã: Chọn tất cả
pm.max_children = 5
Nếu bạn có VPS chỉ có từ 1 cho tới 3 CPU thì bạn nên thiết lập pm.max_children là 2. Còn nếu nhiều hơn thì nên đặt là 5 chứ đừng để nhiều quá.
Tìm tiếp
- Mã: Chọn tất cả
pm.max_spare_servers = 35
Thay thành
- Mã: Chọn tất cả
pm.max_spare_servers = 5
Tìm tiếp
- Mã: Chọn tất cả
pm.min_spare_servers = 5
Thay thành
- Mã: Chọn tất cả
pm.min_spare_servers = 1
Sau đó khởi động lại PHP-FPM
- Mã: Chọn tất cả
service php-fpm restart
III - Tối ưu MariaDB
Đơn giản là hãy mở file /etc/my.cnf và copy đoạn nội dung này vào dưới !includedir /etc/my.cnf.d
- Mã: Chọn tất cả
[mysqld]
key_buffer = 500M
table_cache = 4000
sort_buffer_size = 3M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
max_connections = 400
query_cache_type = 1
query_cache_limit = 5M
query_cache_size = 500M
tmp_table_size=20M
max_heap_table_size=20M
thread_cache_size = 64
Nhớ khởi động lại MySQL
- Mã: Chọn tất cả
service mysql restart
Xong rồi đó.
Nguồn: thachpham.com