Trang chủ Linux WebserverNGINX LEMP cho VPS [Phần 8] – Tối ưu PHP-FPM và MariaDB

LEMP cho VPS [Phần 8] – Tối ưu PHP-FPM và MariaDB

bởi Thạch Phạm
2 bình luận 3,4K views

Tham gia nhóm hỗ trợ WordPress

Tham gia nhóm Hỗ trợ Server - Hosting & WordPress để cùng nhau hỏi đáp và hỗ trợ các vấn đề về WordPress, tối ưu máy chủ/server.

Tham gia ngay
Bài này thuộc phần 8 của 9 phần trong serie LEMP cho VPS

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.

I. Tối ưu PHP-FPM

Để tối ưu PHP-FPM, bạn hãy mở file /etc/php.ini ra và tìm:

;session.save_path = "/tmp"

Thay thành

session.save_path = "/var/lib/php/session"
Khuyến mãi Black Friday

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

[bash]chown -R nginx:nginx /var/lib/php/session[/bash]

Tiếp tục mở file /etc/php-fpm.d/www.conf, tìm:

pm = dynamic

Thay thành

pm = ondemand

Tìm

pm.max_children = 50

Thay thành

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

pm.max_spare_servers = 35

Thay thành

pm.max_spare_servers = 5

Tìm tiếp

pm.min_spare_servers = 5

Thay thành

pm.min_spare_servers = 1

Sau đó khởi động lại PHP-FPM

[bash]service php-fpm restart[/bash]

II. 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.

[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

[bash]service mysql restart[/bash]

Xong rồi đó. :D

5/5 - (2 bình chọn)
2 bình luận

Có thể bạn quan tâm

Hiện tại blog tạm đóng bình luận vì mình cần tập trung thời gian vào cập nhật bài viết. Bình luận sẽ mở ra cho đến khi mình sẵn sàng.