Bạn bị hạn chế về ngân sách đầu tư cho VPS hay Server ? Đừng lo, chỉ cần vài cách đơn giản là có thể cấu hình được MySQL chạy tốt trên các VPS yếu xìu này. Nếu VPS của bạn có RAM quá yếu thì các Query tới cơ sở dữ liệu sẽ gặp vấn đề, gây ra hiện tượng không kết nối được hoặc lỗi trắng trang.

MariaDB hoặc MySQL

MariaDB hoặc MySQL

Tại sao phải tối ưu MySQL ?

VPS yếu mà chạy được các trang có tầm truy cập 20 người một lúc e là mặc định không thể chạy được. Trong lần thí nghiệm gần đây của tôi, cấu hình VPS là:

  1. 512mb RAM
  2. 1CPU
  3. 15G SSD

Với cấu hình như vậy, tôi cài gói LAMP là ngay lập tức bị tèo, chỉ một lúc là VPS không thể hoạt động được. Vì thế tôi mày mò trên mạng và đúc kết ra được cách cài rất hay !

Tôi cài web server là NginX nhưng cứ thi thoảng lại bị lỗi trắng trang. Đây là lỗi cực kỳ phổ biến hay gặp trên các VPS yếu. Lỗi này có rất nhiều nguyên nhân nhưng tựu chung lại thì MySQL không thể chạy và báo lỗi, khi gặp lỗi thì NginX trả về trắng trang. Vì thế sau khi tối ưu MySQL thì mọi thứ hoạt động tuyệt vời !

Trang của tôi hiện nay có thể có 4 ngàn truy cập / ngày mà không hề vất vả. VPS thấp nhất vẫn chạy tốt.

Cài đặt trong MySQL

File cài đặt của MySQL thường sẽ nằm trong đường dẫn sau: /etc/my.conf các bạn có thể edit bằng trình vi trong Linux hoặc bằng phần mềm FTP cũng được. Sau đó phải restart lại MySQL bằng lệnh hoặc reboot lại cả hệ thống là được !

Trước tiên, thêm dòng này vào trong file cài đặt, dưới dòng [mysqld]

default-storage-engine=MyISAM
default-tmp-storage-engine=MyISAM

Nhằm khai báo cho MySQL sử dụng cỗ máy lưu trữ là MyISAM. Vì sao ? InnoDB sử dụng quá nhiều bộ nhớ để đọc và viết các lệnh nên MyISAM sẽ khắc phục được toàn bộ !

Tiếp theo, các bạn cần cài đặt thêm:

key_buffer = 16K 
max_allowed_packet = 1M 
thread_stack = 64K 
table_cache = 4 
sort_buffer = 64K 
net_buffer_length = 2K

Lưu chúng lại và Restart lại MySQL !

Tối ưu trên Cơ sở dữ liệu của bạn

Các bạn cần convert toàn bộ các bảng trong dữ liệu của bạn sang MyISAM để đảm bảo chúng hoạt động tốt nhất với bộ nhớ yếu. Sử dụng lệnh sau đây:

ALTER TABLE table_name ENGINE=MyISAM;

Lưu ý backup trước khi thực hiện bất kỳ thay đổi nào nhé.

Ngoài ra, các bạn cần phải đổi loại lưu trữ từ Longtext sang Mediumtext trên tất thảy các trường dữ liệu trong bảng dữ liệu.

Các trường sử dụng kiểu lưu Longtext sẽ chiếm rất nhiều bộ nhớ, và chúng sẽ “cắn” chết trang của bạn. Bạn nhất thiết phải đổi sang Mediumtext. Sử dụng lệnh sau đây:

ALTER TABLE table_field MODIFY field_id_2 MEDIUMTEXT

Sử dụng bộ nhớ cache tĩnh

Trên các CMS có rất nhiều các plugin hoặc Module giúp bạn cache toàn bộ các trang lại để giảm thiểu truy vấn nhất có thể. Trên WordPress có Wp Super Cache hoặc W3 Total Cache rất tốt. Các bạn không cache thì bộ nhớ có lớn hơn vẫn có thể chết trang như thường.

Một khi trang được cache thì query đảm bảo giảm quá một nửa so với trước đây, giúp trang của bạn sống sót khi có lượt truy cập cao gấp nhiều lần hơn thế nữa !

Bất kỳ vướng mắc nào hãy comment cho mình biết nhé !