Website hiện lỗi dạng như sau, trên màn hình hoặc trong nhật ký lỗi:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /home/.../wp-content/plugins/...
Lỗi có thể hiện thành trang trắng, thông báo “critical error”, lần tải lên thất bại, hoặc lần nhập dữ liệu dừng giữa chừng. Nguyên nhân giống nhau: một tiến trình PHP cần nhiều bộ nhớ hơn mức được phép, và PHP đã dừng tiến trình đó.
Hướng dẫn này giải thích các con số nghĩa là gì, cách tăng giới hạn cho đúng, và cách xác định có thứ gì trên website đang dùng bộ nhớ nhiều hơn mức đáng có hay không.
Lỗi này nghĩa là gì
Mỗi lần có người tải một trang, PHP chạy WordPress, theme và các plugin trong một hạn mức bộ nhớ. Con số trong lỗi chính là hạn mức đó, tính bằng byte. Một số giá trị thường gặp:
33554432bytes = 32 MB67108864bytes = 64 MB134217728bytes = 128 MB268435456bytes = 256 MB
Con số “tried to allocate” chỉ là phần nhỏ cuối cùng PHP xin thêm khi đã hết bộ nhớ. Nó không cho biết bạn cần thêm bao nhiêu. Đường dẫn tệp ở cuối thông báo hữu ích hơn: nó cho thấy plugin hoặc theme nào đang chạy lúc hết bộ nhớ, dù không phải lúc nào đó cũng là thứ dùng nhiều nhất.
Bước 1: Kiểm tra các giới hạn hiện tại
Vào Tools → Site Health → Info và mở mục Server cùng WordPress Constants. Ghi lại ba giá trị:
- PHP memory limit (trong Server): trần cứng do nhà cung cấp hosting đặt.
- WP_MEMORY_LIMIT: mức WordPress xin cho các trang thông thường.
- WP_MAX_MEMORY_LIMIT: mức WordPress xin trong wp-admin và các tác vụ nặng như xử lý ảnh.
WordPress có thể tự nâng giới hạn của mình tới mức PHP, nhưng không vượt quá mức đó. Nếu nhà cung cấp giới hạn PHP ở 128 MB, đặt 512 MB trong WordPress sẽ không có tác dụng.
Bước 2: Tăng giới hạn bộ nhớ WordPress
Mở wp-config.php bằng File Manager hoặc SFTP, rồi thêm các dòng sau phía trên “That’s all, stop editing!”:
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
Với hầu hết website, 256 MB là đủ. Cửa hàng WooCommerce và website dựng bằng trình dựng trang thường cần mức này. Tải lại trang đã lỗi. Nếu lỗi hết, kiểm tra lại Site Health để xác nhận giá trị mới đang được dùng.
Bước 3: Tăng giới hạn PHP nếu WordPress không tăng được
Nếu Site Health vẫn hiện giới hạn PHP cũ, hãy tăng ở cấp máy chủ. Dùng cách mà nhà cung cấp hosting hỗ trợ:
- Bảng điều khiển hosting: tìm “PHP settings”, “Select PHP Version → Options” hoặc “MultiPHP INI Editor”, rồi đặt
memory_limitthành256M. Đây là cách an toàn nhất. - .user.ini hoặc php.ini trong thư mục gốc website, trên các host cho phép:
memory_limit = 256M
- .htaccess, chỉ trên máy chủ Apache chạy PHP dưới dạng module Apache:
php_value memory_limit 256M
Hãy cẩn thận với cách dùng .htaccess. Trên máy chủ chạy PHP theo kiểu khác, dòng này gây 500 Internal Server Error. Nếu điều đó xảy ra, hãy xóa dòng ngay. Thay đổi trong .user.ini có thể mất vài phút mới có hiệu lực. Nếu không cách nào hiệu quả, hãy nhờ nhà cung cấp hosting tăng giới hạn giúp bạn.
Bước 4: Tìm thứ đang dùng nhiều bộ nhớ
Tăng giới hạn chỉ xử lý triệu chứng. Nếu tháng trước website cần 128 MB mà hôm nay hết bộ nhớ ở 256 MB, có gì đó không ổn, và tăng giới hạn thêm chỉ trì hoãn lần sập tiếp theo. Hãy tìm nguyên nhân:
- Xem đường dẫn tệp trong lỗi. Nếu luôn chỉ tới cùng một plugin, hãy bắt đầu từ đó.
- Nghĩ tới thay đổi gần đây. Plugin mới, một lần cập nhật hoặc một lần nhập dữ liệu lớn thường trùng với lỗi đầu tiên.
- Dùng Query Monitor. Plugin miễn phí này hiện mức bộ nhớ đỉnh của từng trang trên thanh quản trị. So sánh các trang, rồi tắt lần lượt các plugin nghi ngờ trên bản staging và theo dõi con số.
- Tìm các tác vụ nặng. Plugin sao lưu, trình kiểm tra liên kết hỏng, plugin bài viết liên quan, và công cụ sitemap hoặc SEO quét mọi bài có thể dùng rất nhiều bộ nhớ, đặc biệt trên website lớn.
Bước 5: Sửa các vấn đề bộ nhớ thường gặp
- Ảnh quá lớn: tải ảnh 6000 pixel thẳng từ máy ảnh khiến WordPress tạo nhiều bản thu nhỏ cùng lúc, và điều đó có thể làm cạn bộ nhớ. Hãy thu nhỏ ảnh trước khi tải lên.
- Nhập và xuất dữ liệu lớn: chia tệp CSV hoặc XML lớn thành các tệp nhỏ hơn, hoặc chạy bằng WP-CLI, vốn thường có giới hạn cao hơn.
- Tùy chọn autoload bị phình: WordPress nạp mọi cài đặt “autoloaded” trên mỗi trang. Dữ liệu sót từ plugin đã xóa có thể làm phần này rất lớn. Tools → Site Health cảnh báo khi các tùy chọn autoload quá lớn.
- Phiên bản PHP cũ: các phiên bản PHP hiện tại thường dùng bộ nhớ hiệu quả hơn. Hãy chạy phiên bản PHP mà plugin của bạn hỗ trợ và vẫn còn nhận bản cập nhật bảo mật.
Bước 6: Nếu bạn không vào được wp-admin
Nếu lỗi cũng làm sập wp-admin, hãy sửa wp-config.php qua SFTP hoặc File Manager như ở Bước 2. Nếu vẫn chưa đủ, tắt plugin bằng cách đổi tên thư mục wp-content/plugins, như mô tả trong hướng dẫn màn hình trắng chết trên WordPress, rồi bật lại từng plugin một.
Khi nào nên nhờ chuyên gia
Hãy nhờ giúp nếu lỗi quay lại sau khi bạn tăng giới hạn, nếu nhà cung cấp hosting không cho vượt một mức thấp, nếu đường dẫn tệp chỉ tới plugin mà website phụ thuộc, hoặc nếu mức dùng bộ nhớ cứ tăng dần khi website lớn lên. Những trường hợp này thường là vấn đề mã hoặc cơ sở dữ liệu cần phân tích đúng cách, không chỉ là một con số lớn hơn.
Muốn chúng tôi tìm nguyên nhân thật? Dịch vụ WordPress Fix đặt giới hạn bộ nhớ hợp lý, phân tích các trang bị hết bộ nhớ, và sửa plugin, theme hoặc dữ liệu gây ra vấn đề. Giá cố định $45, được xác nhận trước khi làm bất kỳ việc gì, kèm Cam kết dịch vụ. Yêu cầu sửa.
Câu hỏi thường gặp
WordPress cần bao nhiêu bộ nhớ?
Bản thân WordPress cần không nhiều. Một blog đơn giản thường chạy tốt với 128 MB. Cửa hàng, website thành viên và website dựng bằng trình dựng trang thường cần 256 MB. Nếu một website cần nhiều hơn mức đó đáng kể trên các trang thông thường, hãy tìm plugin nặng hoặc dữ liệu bị phình.
Đặt giới hạn bộ nhớ rất cao có an toàn không?
Giới hạn là một trần, không phải phần bộ nhớ được cấp sẵn, nên mức cao hơn không tự nó dùng thêm bộ nhớ. Nhưng mức rất cao có thể để một tiến trình hỏng làm chậm cả máy chủ. Hãy tăng tới mức bạn cần và sửa nguyên nhân.
Vì sao lỗi xuất hiện khi tôi không thay đổi gì?
Cập nhật plugin tự động, cơ sở dữ liệu ngày càng lớn, hoặc nhà cung cấp hosting hạ giới hạn hay đổi phiên bản PHP đều có thể kích hoạt lỗi. Hãy xem lịch sử cập nhật và hỏi nhà cung cấp xem phía họ có thay đổi gì không.




