Lỗi “WordPress PHP-FPM memory exhausted” là một trong những vấn đề gây đau đầu nhất đối với quản trị viên website. Khi bộ nhớ PHP dành cho PHP-FPM cạn kiệt, trang web sẽ hiển thị màn hình trắng, lỗi 500 Internal Server Error hoặc thông báo “Allowed memory size of X bytes exhausted”. Nguyên nhân thường đến từ plugin kém tối ưu, theme nặng hoặc cấu hình server không phù hợp. Bài viết này sẽ giúp bạn hiểu rõ bản chất lỗi, các nguyên nhân phổ biến và hướng dẫn chi tiết cách tăng giới hạn bộ nhớ PHP-FPM, điều chỉnh cấu hình worker pool, và tối ưu WordPress để tránh gặp lại lỗi này.
Bản Chất Của Lỗi WordPress PHP-FPM Memory Exhausted

PHP-FPM (FastCGI Process Manager) là một trong những cách triển khai PHP phổ biến nhất trên server Nginx hoặc Apache. Khi WordPress request đến server, PHP-FPM sẽ cấp phát một lượng bộ nhớ nhất định (memory limit) cho tiến trình xử lý. Nếu script WordPress cần nhiều bộ nhớ hơn giới hạn được cấp, PHP sẽ ngừng thực thi và trả về lỗi fatal error.
Thông báo điển hình bạn sẽ thấy trong error log:
- PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)
- WordPress memory exhausted – PHP-FPM process terminated unexpectedly
- Kiểm tra error log PHP:
tail -f /var/log/php-fpm/www-error.log - Kiểm tra error log WordPress: vào wp-content/debug.log (nếu bật WP_DEBUG)
- Dùng plugin như Query Monitor để theo dõi memory usage theo thời gian thực
- Kiểm tra lệnh
free -mtrên server xem RAM còn bao nhiêu - pm.max_children: số worker tối đa. Tính theo RAM: VD server 2GB RAM, mỗi worker dùng 50MB, đặt max_children = 40.
- pm.start_servers: số worker khởi động. Nên bằng pm.min_spare_servers.
- pm.min_spare_servers và pm.max_spare_servers: giới hạn worker rảnh.
- pm.max_requests: nên đặt 100-500 để worker tự restart, tránh rò rỉ.
- pm = dynamic
- pm.max_children = 30
- pm.start_servers = 5
- pm.min_spare_servers = 5
- pm.max_spare_servers = 10
- pm.max_requests = 200
- Vô hiệu hóa plugin không dùng: Plugin càng nhiều, memory footprint càng lớn.
- Dùng cache plugin: WP Rocket, W3 Total Cache giảm số lượng request động.
- Giới hạn số bản revision: thêm define(‘WP_POST_REVISIONS’, 5) vào wp-config.
- Dọn dẹp database: xóa spam, transient hết hạn bằng plugin WP-Optimize.
- Nâng cấp PHP lên 8.x: PHP 8.x nhanh hơn và tiêu thụ ít bộ nhớ hơn PHP 7.x.
- opcache.enable=1
- opcache.memory_consumption=128
- opcache.max_accelerated_files=4000
- Chỉ tăng memory_limit mà không kiểm tra server RAM: Đặt 512M cho website trên VPS 512MB sẽ gây OOM và crash server.
- Không restart PHP-FPM sau khi sửa config: Thay đổi pool không có hiệu lực nếu không restart.
- Bỏ qua error log cụ thể: Nhiều người thấy lỗi 500 nhưng không xem log để biết đúng là memory exhausted hay lỗi khác.
- Cài plugin tối ưu không chính chủ: Plugin “memory booster” có thể gây xung đột hoặc chứa mã độc.
- Không backup trước khi thay đổi: Sai cú pháp trong wp-config có thể làm sập site.
- Giữ nguyên cấu hình mặc định của PHP-FPM
Con số 134217728 bytes tương đương 128 MB – đây là giới hạn mặc định của WordPress. Tuy nhiên với các website hiện đại có nhiều plugin, hình ảnh, cache phức tạp, con số này thường không đủ.
Nguyên Nhân Gây Ra Lỗi Memory Exhausted Trong WordPress Với PHP-FPM

Cấu hình memory_limit quá thấp trong php.ini hoặc wp-config.php
Mặc dù WordPress khuyến nghị 64 MB, nhưng thực tế nhiều host chỉ cài đặt 128 MB. Khi bạn cài plugin như Elementor, WooCommerce, Yoast SEO, hoặc sử dụng page builder nặng, lượng bộ nhớ tiêu thụ có thể vượt 256 MB. Nếu không tăng giới hạn, lỗi xuất hiện ngay lập tức.
Plugin hoặc Theme bị rò rỉ bộ nhớ (memory leak)
Một số plugin kém chất lượng không giải phóng bộ nhớ sau khi xử lý xong. Mỗi lần request mới, bộ nhớ tích tụ dần cho đến khi vượt ngưỡng. Theme builder như Divi, Avada cũng thường gây memory exhaust nếu không cập nhật hoặc xung đột với plugin khác.
Số lượng tiến trình PHP-FPM quá ít hoặc pm.max_requests không hợp lý
Trong pool config của PHP-FPM, tham số pm.max_requests quyết định sau bao nhiêu request thì một worker được khởi động lại. Nếu giá trị quá lớn, worker sẽ chứa rác bộ nhớ dần. Nếu quá nhỏ, hiệu suất giảm. Lỗi memory exhausted cũng xuất hiện khi pm.max_children không đủ cho lượng traffic.
Giới hạn bộ nhớ trên VPS/Server quá thấp
Nếu server vật lý chỉ có 512 MB RAM, việc phân bổ cho PHP-FPM 256 MB có thể khiến toàn bộ hệ thống chết. Lỗi OOM Killer có thể kill process PHP-FPM, gây ra memory exhausted gián tiếp.
Cách Kiểm Tra Lỗi WordPress PHP-FPM Memory Exhausted

Trước khi sửa, bạn cần xác nhận chính xác lỗi:
Nếu thấy dòng “Allowed memory size exhausted” thì chắc chắn là lỗi memory_limit. Nếu thấy “PHP Fatal error: Out of memory” hoặc “Cannot allocate memory” thì có thể server thiếu RAM hoặc cấu hình PHP-FPM sai.
Hướng Dẫn Chi Tiết Khắc Phục Lỗi Memory Exhausted

Tăng memory_limit trong wp-config.php
Cách đơn giản nhất: thêm dòng sau vào file wp-config.php ngay trước dòng “That’s all, stop editing!”
define(‘WP_MEMORY_LIMIT’, ‘256M’);
Nếu cần nhiều hơn cho admin (ví dụ upload ảnh lớn), thêm:
define(‘WP_MAX_MEMORY_LIMIT’, ‘512M’);
Lưu ý: giá trị tối đa phụ thuộc vào memory_limit của PHP. Nếu PHP limit chỉ 128M, bạn không thể đặt WP_MEMORY_LIMIT 256M. Cần tăng PHP limit trước.
Tăng memory_limit trong php.ini hoặc pool config của PHP-FPM
Truy cập file cấu hình PHP-FPM pool (thường nằm ở /etc/php/8.x/fpm/pool.d/www.conf). Sửa hoặc thêm dòng:
php_admin_value[memory_limit] = 256M
Hoặc trong file php.ini (nếu dùng chung):
memory_limit = 256M
Sau đó restart PHP-FPM:
sudo systemctl restart php8.x-fpm
Kiểm tra bằng file phpinfo() để xem giá trị mới đã áp dụng chưa.
Điều chỉnh cấu hình PHP-FPM Worker Pool
Bạn có thể tối ưu các tham số sau trong www.conf:
Ví dụ cấu hình cho website WordPress traffic vừa (RAM 2GB, mỗi worker 64MB):
Tối ưu code WordPress giảm tiêu thụ bộ nhớ
Sử dụng OpCache cho PHP-FPM
OpCache lưu mã byte đã biên dịch, giảm load cho mỗi request. Kích hoạt bằng cách bật trong php.ini:
Điều này giảm đáng kể memory sử dụng mỗi lần load file PHP.
So Sánh Các Phương Pháp Tăng Giới Hạn Bộ Nhớ

| Phương pháp | Ưu điểm | Nhược điểm |
|---|---|---|
| Thêm define trong wp-config.php | Dễ thực hiện, không ảnh hưởng server khác | Chỉ tác động WordPress, vẫn bị chặn bởi PHP limit |
| Sửa php.ini pool config | Áp dụng cho toàn bộ PHP-FPM, linh hoạt | Cần restart service, có thể ảnh hưởng nhiều site |
| Tăng RAM VPS hoặc upgrade hosting | Giải quyết triệt để nếu server đói RAM | Tốn chi phí, không phải lúc nào cũng cần |
| Tối ưu plugin và theme | Giảm memory gốc, không cần tăng limit quá cao | Mất thời gian debug, có thể cần chuyên gia |
Sai Lầm Thường Gặp Khi Xử Lý Lỗi Memory Exhausted
- Theme WordPress Uninstall Error: Nguyên Nhân, Cách Khắc Phục và Phòng Tránh Toàn Diện
- Plugin Miễn Phí và Plugin Trả Phí: Lựa Chọn Nào Tối Ưu Cho Website Của Bạn?
- Theme WordPress ảnh hưởng tốc độ như thế nào? Phân tích chi tiết từ A đến Z
- WooCommerce Sau Cài Plugin Bị Lỗi: Nguyên Nhân Và Cách Khắc Phục Toàn Diện
- Lỗi Cài Plugin WordPress: Nguyên Nhân, Cách Khắc Phục Toàn Diện Từ A-Z














