memory_limit là gì
memory_limit quy định số RAM tối đa mà mỗi process PHP-FPM hoặc Apache mod_php có thể sử dụng. Nếu script vượt quá giới hạn này, PHP sẽ dừng xử lý và báo lỗi “Allowed memory size exhausted”.
Khi nào nên tăng memory_limit
- Plugin hoặc theme nặng: WooCommerce, page builder (Elementor, Divi), hoặc theme đa năng có thể cần nhiều RAM để render trang hoặc build query phức tạp.
- Import/export dữ liệu lớn: chạy lệnh WP-CLI, nhập file CSV/XML, xử lý media nhiều.
- Batch job hoặc cron phức tạp: ví dụ plugin backup, AI engine, phân tích dữ liệu.
- Server đủ RAM: nếu server còn nhiều RAM trống, tăng memory_limit sẽ giúp script nặng không bị kill giữa chừng.
Khi nào không nên tăng memory_limit
- RAM giới hạn: trên VPS nhỏ (1–2 GB RAM), tăng quá cao sẽ khiến nhiều process PHP chiếm hết RAM và đẩy server vào swap.
- Che giấu vấn đề code: đôi khi plugin bị leak memory hoặc query kém tối ưu. Tăng memory_limit chỉ che giấu bug mà không giải quyết tận gốc.
- Không cần thiết: site blog, site tin tức nhẹ, theme tối ưu thường chỉ cần 128M–256M.
Tại sao “càng cao càng tốt” là sai
Nhiều hướng dẫn khuyên tăng memory_limit lên 512M, 1G hoặc hơn, nhưng điều này có rủi ro:
- Gây áp lực lên RAM: nếu pm.max_children của PHP-FPM = 50 và mỗi process có thể chiếm tới 512 MB → lý thuyết có thể cần 25 GB RAM, vượt xa khả năng server.
- Che giấu lỗi logic: code query vòng lặp sai hoặc plugin leak RAM sẽ âm thầm “ăn” nhiều bộ nhớ hơn, không bị dừng ngay, dẫn đến site chậm dần.
- Lãng phí tài nguyên: hầu hết request WordPress chỉ cần vài chục MB. Set limit quá cao không giúp nhanh hơn, chỉ mở cửa cho request bất thường chiếm RAM.
Cách xác định memory_limit hợp lý
Bạn có thể kiểm tra mức RAM trung bình mỗi request bằng plugin profiler, hoặc đơn giản dùng ps aux --sort -rss | grep php-fpm để xem process PHP đang chiếm bao nhiêu RAM.
Khuyến nghị:
- Site nhỏ: 128M–256M.
- Site WooCommerce / page builder: 256M–512M.
- Job đặc biệt (import lớn, AI, backup): 512M–1024M, nhưng chỉ nên bật khi cần.
Kỹ thuật nâng cao
- Dùng
php.iniriêng cho CLI (WP-CLI, cron job) với memory_limit cao hơn, nhưng giữ mức vừa phải cho web request. - Giám sát bằng tool như New Relic, Tideways, hoặc đơn giản log
memory_get_peak_usage()để đo thật thay vì đoán. - Nếu thường xuyên chạm limit → tối ưu query, index database, hoặc refactor plugin thay vì chỉ tăng RAM.
Kết luận
memory_limit không phải “càng cao càng tốt”. Nó cần được cân đối giữa RAM server, số process PHP-FPM, và đặc thù workload. Tăng memory_limit hợp lý sẽ giúp WordPress ổn định và tránh lỗi “exhausted memory”. Nhưng quan trọng hơn, hãy xem nó là công cụ giám sát để phát hiện code/plugin bất thường, thay vì chỉ là giải pháp chữa cháy.
Bình luận