Optimization

VPS bao nhiêu RAM là đủ cho WordPress năm 2026

Bạn vừa SSH vào một VPS mới toanh, định cài WordPress lên, nhưng đứng trước câu hỏi muôn thuở: gói VPS bao nhiêu RAM là đủ cho WordPress? Nếu bạn từng chạy WordPress trên shared hosting rồi chuyển sang VPS, chắc chắn bạn đã thấy cảnh tượng quen thuộc: trang web tải nhanh vào lúc sáng sớm, rồi chậm dần khi traffic tăng, và đến chiều thì MySQL ăn hết RAM, swap bắt đầu nhảy múa.

Bài viết này sẽ cho bạn một cách tiếp cận thực tế, dựa trên kinh nghiệm vận hành, để trả lời câu hỏi đó một cách chính xác, kèm theo các lệnh kiểm tra và cấu hình cụ thể trên Ubuntu 24.04 LTS.

Nói ngắn gọn: với WordPress, RAM tối thiểu là 1GB cho website cá nhân, 2GB là điểm khởi đầu thoải mái, và 4GB trở lên cho website có traffic đáng kể hoặc chạy WooCommerce. Con số chính xác phụ thuộc vào lượng truy cập đồng thời, plugin và cách bạn cấu hình PHP-FPM cũng như MySQL.

  • WordPress cần tối thiểu 1GB RAM cho website nhỏ, ít truy cập.
  • 2GB RAM là mức khởi đầu an toàn cho hầu hết website, đủ cho PHP-FPM và MySQL chạy ổn định.
  • 4GB RAM phù hợp website có vài nghìn lượt truy cập/ngày hoặc dùng WooCommerce.
  • 8GB RAM trở lên dành cho website lớn, nhiều plugin nặng, hoặc cần Redis object cache.

Yêu cầu trước khi bắt đầu

  • VPS chạy Ubuntu 24.04 LTS, tối thiểu 1GB RAM (khuyến nghị 2GB).
  • User có quyền sudo hoặc truy cập root.
  • Nginx hoặc Apache đã được cài đặt sẵn, PHP 8.3 và MySQL/MariaDB.
  • Domain đã trỏ về IP VPS (nếu muốn truy cập qua tên miền).

Vì sao RAM lại quan trọng với WordPress

WordPress là một ứng dụng PHP, và mỗi request đến website đều cần một tiến trình PHP-FPM để xử lý. Mỗi tiến trình PHP-FPM ngốn khoảng 50-80MB RAM tùy theo plugin và theme. Nếu bạn có 100 request đồng thời, con số đó nhân lên thành 5-8GB. Tất nhiên, không phải lúc nào cũng có 100 request cùng lúc, nhưng điều đó giải thích vì sao RAM là tài nguyên đầu tiên bị bóp nghẹt khi traffic tăng.

MySQL (hoặc MariaDB) là thành phần ngốn RAM thứ hai. Mặc định, InnoDB buffer pool được đặt khoảng 128MB, nhưng để hiệu suất tốt, bạn nên tăng lên. Nếu RAM thấp, MySQL và PHP-FPM sẽ tranh giành bộ nhớ, dẫn đến swap và website chậm rãi rồi treo.

Nhiều người nghĩ CPU mới là yếu tố quyết định, nhưng với WordPress, RAM thường là bottleneck đầu tiên. Một VPS 1 vCPU nhưng 4GB RAM có thể chạy WordPress mượt mà hơn nhiều so với VPS 4 vCPU nhưng chỉ 2GB RAM.

Bước 1 - Xác định nhu cầu RAM dựa trên lưu lượng thực tế

Không có con số ma thuật nào áp dụng cho mọi trường hợp. Thay vào đó, hãy dựa vào các mốc sau, đã được kiểm chứng qua thực tế vận hành:

Loại websiteLưu lượngRAM khuyến nghị
Blog cá nhân, portfolio< 1.000 lượt truy cập/ngày1GB - 2GB
Website doanh nghiệp, tin tức1.000 - 10.000 lượt/ngày2GB - 4GB
WooCommerce, website bán hàngTùy theo số sản phẩm và đơn hàng4GB trở lên
Website lớn, nhiều plugin nặng> 10.000 lượt/ngày8GB trở lên

Đừng quên yếu tố plugin. Một website dùng 5 plugin nhẹ sẽ khác hoàn toàn website dùng 30 plugin, trong đó có page builder nặng như Elementor hoặc plugin SEO quét toàn bộ nội dung mỗi lần request. Hãy kiểm tra danh sách plugin trước khi quyết định RAM.

Nếu bạn đang phân vân giữa các gói, hãy bắt đầu với mức 2GB. Đó là điểm cân bằng tốt giữa chi phí và hiệu năng. Bạn có thể nâng cấp sau nếu cần, và thuê VPS Linux theo tháng giúp bạn linh hoạt thay đổi cấu hình mà không bị ràng buộc.

Bước 2 - Cấu hình PHP-FPM phù hợp với RAM

Cấu hình PHP-FPM là nơi bạn có thể tiết kiệm hoặc lãng phí RAM nhất. Giá trị mặc định thường quá cao cho VPS nhỏ. Hãy mở file cấu hình pool mặc định:

sudo nano /etc/php/8.3/fpm/pool.d/www.conf

Tìm và điều chỉnh các giá trị sau. Nguyên tắc: mỗi tiến trình PHP-FPM ngốn memory_limit tối đa, nhưng thực tế thường dùng khoảng 30-50% con số đó.

pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 500

Với VPS 2GB RAM, pm.max_children = 10 là con số an toàn. Nếu mỗi tiến trình dùng ~80MB, 10 tiến trình sẽ ngốn 800MB, MySQL cần ~500MB, hệ điều hành ~200MB, tổng cộng ~1.5GB, vẫn còn dư địa.

Nếu bạn có VPS 4GB, có thể tăng lên pm.max_children = 20. Với 1GB RAM, giảm xuống pm.max_children = 5 và chấp nhận giới hạn số request đồng thời.

Sau khi sửa, kiểm tra và restart PHP-FPM:

sudo php-fpm8.3 -t
sudo systemctl restart php8.3-fpm
sudo systemctl status php8.3-fpm

Output mong đợi cho lệnh cuối: active (running).

Bước 3 - Kiểm tra lượng RAM thực tế đang dùng

Đừng đoán, hãy đo. Sau khi cài WordPress và cấu hình PHP-FPM, hãy để website chạy vài giờ rồi kiểm tra:

free -h
ps aux --sort=-%mem | head -15

Lệnh free -h cho bạn tổng quan RAM và swap. Lệnh thứ hai liệt kê các tiến trình ngốn RAM nhất. Bạn sẽ thấy rõ php-fpmmysqld là hai cái tên quen thuộc ở top.

Một cách kiểm tra chi tiết hơn là dùng htop (cài bằng sudo apt install htop). Nhìn vào cột MEM%, bạn sẽ biết tiến trình nào đang ăn RAM. Nếu thấy swap đã dùng (cột Swap trong free -h khác 0), nghĩa là RAM đang thiếu.

Nếu RAM gần đầy và swap bắt đầu hoạt động, bạn có hai lựa chọn: giảm pm.max_children hoặc nâng cấp VPS. Đừng cố tối ưu đến mức khốn khổ khi gói 2GB lên 4GB chỉ chênh vài chục nghìn đồng mỗi tháng.

Với những ai đang tìm kiếm một giải pháp trọn gói, các gói VPS WordPress được cấu hình sẵn có thể giúp bạn bỏ qua bước tinh chỉnh này.

Bước 4 - Tối ưu MySQL cho từng mức RAM

MySQL/MariaDB là thành phần ngốn RAM lớn thứ hai. Giá trị quan trọng nhất là innodb_buffer_pool_size, nơi lưu dữ liệu và index trong bộ nhớ. Đặt quá thấp, website chậm vì phải đọc từ đĩa. Đặt quá cao, hệ thống hết RAM và bị OOM killer tấn công.

Mở file cấu hình:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Thêm hoặc sửa các dòng sau trong section [mysqld]:

[mysqld]
innodb_buffer_pool_size = 512M
performance_schema = OFF

Nguyên tắc chung: innodb_buffer_pool_size nên đặt khoảng 50-60% RAM khả dụng.

  • VPS 2GB RAM → đặt 512M - 768M.
  • VPS 4GB RAM → đặt 1G - 1.5G.
  • VPS 8GB RAM → đặt 2G - 4G.

Lưu ý: performance_schema = OFF giúp tiết kiệm khoảng 100-200MB RAM, nhưng bạn sẽ mất khả năng giám sát chi tiết. Nếu bạn dùng công cụ giám sát như Prometheus, hãy cân nhắc giữ nguyên.

Sau khi sửa, restart MySQL và kiểm tra:

sudo systemctl restart mysql
sudo systemctl status mysql

Output mong đợi: active (running).

Bước 5 - Khi nào cần thêm RAM và dấu hiệu nhận biết

Có những dấu hiệu rõ ràng cho thấy WordPress của bạn đang đói RAM. Nhận biết sớm giúp bạn xử lý trước khi website sập.

  1. Swap hoạt động liên tục: Kiểm tra bằng free -h, nếu cột Swap used không về 0 sau khi website yên tĩnh, RAM đang thiếu.
  2. Website tải chậm vào giờ cao điểm: Thời điểm nhiều người truy cập, PHP-FPM không đủ tiến trình xử lý, request phải xếp hàng.
  3. MySQL bị kill: Kiểm tra log bằng sudo journalctl -u mysql | grep -i "killed". Nếu thấy thông báo OOM, nghĩa là kernel đã giết MySQL vì thiếu RAM.
  4. Lỗi 502 Bad Gateway: Nginx không kết nối được PHP-FPM vì tiến trình đã chết do thiếu tài nguyên.

Nếu gặp một trong các dấu hiệu trên, hãy kiểm tra pm.max_children của PHP-FPM. Nếu đã giảm xuống mức tối thiểu mà vẫn thiếu RAM, đã đến lúc nâng cấp. Việc nâng cấp trên các dịch vụ thuê VPS theo tháng hiện nay thường chỉ mất vài phút, không cần chuyển dữ liệu.

Xử lý lỗi thường gặp

Lỗi 1: "Cannot allocate memory" khi cài plugin hoặc chạy WP-CLI. Nguyên nhân: PHP-FPM hoặc tiến trình CLI vượt quá giới hạn RAM. Kiểm tra memory_limit trong php.ini:

php -i | grep memory_limit

Nếu dưới 256M, hãy tăng lên trong /etc/php/8.3/cli/php.ini.

Lỗi 2: "MySQL server has gone away" xuất hiện thường xuyên. Nguyên nhân: MySQL bị kill do OOM hoặc timeout. Kiểm tra log lỗi MySQL:

sudo journalctl -u mysql --since "1 hour ago" | grep -i error

Nếu thấy lỗi liên quan đến bộ nhớ, hãy giảm innodb_buffer_pool_size và tăng swap trước khi nâng cấp RAM.

Lỗi 3: Website tải chậm nhưng CPU không cao. Rất có thể nguyên nhân đến từ việc thiếu RAM dẫn đến swap. Kiểm tra bằng vmstat 1, nếu cột siso (swap in/out) liên tục khác 0, đã đến lúc thêm RAM hoặc tối ưu lại cấu hình.

Câu hỏi thường gặp

VPS 1GB RAM có chạy được WordPress không?

Có, nhưng chỉ phù hợp website cá nhân rất ít truy cập (vài trăm lượt/ngày). Bạn cần giảm pm.max_children xuống 3-5, tắt các plugin nặng, và chấp nhận giới hạn. Nên cân nhắc dùng thêm swap, nhưng đừng coi swap là giải pháp lâu dài vì tốc độ đọc ghi sẽ giảm rõ rệt.

VPS 2GB RAM đủ cho WordPress bao nhiêu lượt truy cập?

Với cấu hình PHP-FPM tối ưu (khoảng 8-10 tiến trình) và MySQL buffer pool 512M, VPS 2GB có thể xử lý 3.000-5.000 lượt truy cập mỗi ngày, tùy theo độ nặng của plugin và theme. Nếu dùng thêm cache như WP Super Cache hoặc Redis, con số này có thể tăng đáng kể.

WordPress cần RAM hay CPU quan trọng hơn?

Với hầu hết website WordPress, RAM quan trọng hơn CPU. WordPress là ứng dụng PHP chạy theo mô hình request-response, mỗi request cần một tiến trình trong bộ nhớ. Khi RAM đầy, hệ thống phải dùng swap, làm chậm mọi thứ dù CPU có nhanh đến đâu. CPU chỉ thực sự là bottleneck khi bạn chạy các tác vụ nặng như xử lý ảnh hàng loạt hay cron job phức tạp.

Có nên dùng swap cho VPS chạy WordPress?

Nên, nhưng chỉ như giải pháp dự phòng. Tạo file swap 1-2GB giúp hệ thống không bị OOM kill khi có đột biến traffic. Tuy nhiên, đừng phụ thuộc vào swap vì tốc độ đọc ghi chậm hơn RAM rất nhiều. Swap nên được xem là phao cứu sinh tạm thời, không phải cách mở rộng RAM.

WooCommerce cần bao nhiêu RAM?

WooCommerce nên bắt đầu từ 4GB RAM. Lý do: mỗi request liên quan đến giỏ hàng, đơn hàng và sản phẩm đều nặng hơn bài viết thông thường. Thêm vào đó, các plugin thanh toán, vận chuyển và quản lý kho cũng ngốn tài nguyên. Nếu cửa hàng của bạn có nhiều sản phẩm và đơn hàng đồng thời, 8GB sẽ an toàn hơn.

Có nên dùng Redis object cache để giảm tải RAM không?

Có, nếu bạn có từ 4GB RAM trở lên. Redis object cache lưu kết quả truy vấn và đối tượng PHP vào bộ nhớ, giảm số lần PHP phải thực thi. Tuy nhiên, Redis tự nó cũng ngốn RAM (thường 50-100MB cho cấu hình nhỏ). Trên VPS 2GB, lợi ích của Redis không rõ rệt bằng việc tối ưu PHP-FPM và MySQL.

Bài viết liên quan

Lưu ý: Bài viết mang tính tham khảo, tổng hợp kiến thức chung. Mỗi hệ thống, hạ tầng và nhu cầu có đặc thù riêng, nên kiểm thử trong môi trường an toàn và tham vấn kỹ sư trước khi triển khai thực tế.