Bang hộiTiền mặt: 0 Xu Trò chơiHộp quà giáng sinhThứ Hai, 15:33:00 - 23/12/2024
Chia sẻ kiến thức sử dụng VPS (máy chủ ảo) - Server (máy chủ riêng)

Các điều hành viên: Admin, Mod, SMod

Tối ưu hóa Nginx, PHP-FPM, MariaDB cho website

Tối ưu hóa Nginx, PHP-FPM, MariaDB cho website

#1 » Gửi bài gửi bởi nghiammo1992 » 02/04/2015 02:17 » @385786

Ở bước này, chúng ta sẽ cùng sửa lại file nginx.conf mặc định trên VPS vì có một số tùy chọn nó sẽ trở nên tốt hơn nếu bạn biết cách cấu hình lại. File nginx.conf này sẽ nằm ở thư mục /etc/nginx/ (nếu bạn làm theo serie này).

Đừ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 đó. :D

Nguồn: thachpham.com
nghiammo1992
Hình đại diện của thành viên
Rank: ☀️2/30☀️
Cấp độ:
Tu luyện:
Like:
Online:
Bang hội: Tiếu Ngạo
Xếp hạng Bang hội: ⚡5/46⚡
Level:
Chủ đề đã tạo: 🩸4141/4141🩸
Tiền mặt:
Ngân hàng:
Nhóm:
Danh hiệu: ⚝⚝⚝Truyền Thuyết⚝⚝⚝
Giới tính:
Ngày tham gia:
Đến từ:
Thiết bị:
Số điện thoại:
(Cốc Cốc 46.0)

- Chia sẻ bài viết:

- Xem full chủ đề: http://chiase123.com/viewtopic.html?t=31061

- Link bài viết: http://chiase123.com/topic31061.html#p385786

Quay về VPS - Server