Cách khắc phục lỗi 'Error establishing a Redis connection' trong WordPress

intermediate📝 WordPress2026-07-05| Ubuntu/CentOS, Nginx/Apache, WordPress 5.0+, Redis Server, PHP-Redis extension

Error Message

Error establishing a Redis connection
#redis#object-cache#wordpress-optimization#server-management#php

Vấn đềBạn mở bảng điều khiển WordPress và thấy một cảnh báo gây khó chịu: Error establishing a Redis connection. Điều này xảy ra khi plugin WordPress của bạn—thường là Redis Object Cache hoặc WP Redis—mất kết nối với Redis server. Mặc dù trang web của bạn vẫn có thể tải bằng cơ chế dự phòng (fallback), nhưng hiệu suất sẽ giảm mạnh. Thời gian tải trang thường tăng từ 200ms nhanh chóng lên hơn 2 giây vì cơ sở dữ liệu phải xử lý mọi tác vụ nặng mà không có bộ nhớ đệm (cache).

Nguyên nhân phổ biến- Dịch vụ Redis bị treo hoặc không tự khởi động sau khi khởi động lại máy chủ.- Thiếu extension PHP-Redis, đặc biệt là sau khi nâng cấp phiên bản PHP.- Sai thông tin đăng nhập hoặc cài đặt host trong wp-config.php.- Redis đang lắng nghe trên sai IP hoặc cổng.- Máy chủ hết RAM và trình xử lý OOM (Out Of Memory) của Linux đã ngắt tiến trình Redis.## Bước 1: Kiểm tra xem Redis có thực sự đang chạy khôngHầu hết các trường hợp, dịch vụ đơn giản là đã dừng hoạt động. Hãy đăng nhập vào máy chủ qua SSH và kiểm tra trạng thái ngay lập tức.

# Cho Ubuntu/Debian
sudo systemctl status redis-server

# Cho CentOS/RHEL
sudo systemctl status redis

Nếu kết quả hiển thị inactive (dead) hoặc failed, hãy thử khởi động lại dịch vụ:

sudo systemctl start redis-server

Để ngăn chặn tình trạng này xảy ra sau lần bảo trì máy chủ tiếp theo, hãy đảm bảo nó tự khởi động cùng hệ thống:

sudo systemctl enable redis-server

Bước 2: Kiểm tra kết nối thủ côngDịch vụ đang chạy không phải lúc nào cũng có nghĩa là kết nối đang hoạt động. Sử dụng công cụ redis-cli có sẵn để ping máy chủ và kiểm tra khả năng phản hồi.

redis-cli ping

Một máy chủ hoạt động tốt sẽ phản hồi PONG. Nếu bạn thấy "Connection refused", Redis có thể đã được cấu hình để sử dụng Unix socket thay vì cổng TCP, hoặc nó đang lắng nghe trên một cổng hoàn toàn khác.

Bước 3: Xác minh Extension PHP-RedisWordPress không thể giao tiếp với Redis nếu thiếu "thông dịch viên". Đó chính là extension PHP-Redis. Nếu gần đây bạn đã nâng cấp trang web từ PHP 8.1 lên 8.3, extension này có thể bị thiếu ở phiên bản mới.

Chạy lệnh này để xem module có đang hoạt động hay không:

php -m | grep redis

Nếu kết quả trống, hãy cài đặt extension. Đối với máy chủ chạy PHP 8.3 trên Ubuntu, hãy sử dụng:

sudo apt install php8.3-redis
sudo systemctl restart php8.3-fpm
sudo systemctl restart nginx

Bước 4: Kiểm tra cài đặt trong wp-config.phpNếu máy chủ vẫn ổn nhưng WordPress vẫn báo lỗi, khả năng cao là do cấu hình của bạn. Hãy mở tệp wp-config.php và kiểm tra các hằng số sau.

define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
// define('WP_REDIS_PASSWORD', 'mat-khau-bi-mat-cua-ban');

Hãy lưu ý những lỗi thường gặp sau:

  • Localhost vs 127.0.0.1: Một số máy chủ không phân giải localhost chính xác. Hãy sử dụng 127.0.0.1 để đảm bảo an toàn.- Bảo vệ bằng mật khẩu: Nếu bạn thiết lập requirepass trong redis.conf, bạn phải đưa nó vào cấu hình của mình.- Unix Sockets: Nếu bạn muốn hiệu suất tốt hơn, hãy sử dụng đường dẫn socket như /var/run/redis/redis.sock thay vì địa chỉ IP.## Bước 5: Kiểm tra Firewall và Bind AddressBạn đang chạy Redis trên một máy chủ cơ sở dữ liệu riêng biệt? Nếu vậy, Redis mặc định chỉ cho phép các kết nối cục bộ. Bạn cần chỉnh sửa tệp /etc/redis/redis.conf để cho phép lưu lượng truy cập từ bên ngoài.
# Tìm dòng này:
bind 127.0.0.1

# Thay đổi để bao gồm IP nội bộ của web server:
bind 127.0.0.1 10.0.0.5

Sau khi cập nhật cấu hình, hãy khởi động lại Redis. Đừng quên mở cổng 6379 trên tường lửa (UFW hoặc Firewalld) để cho phép web server truy cập.

Cách xác minh kết quả- Kiểm tra Dashboard: Truy cập vào Settings > Redis trong WordPress. Bạn cần thấy trạng thái "Connected" màu xanh lá cây rực rỡ.- Giám sát trực tiếp: Chạy lệnh redis-cli monitor trong terminal và tải lại trang web. Nếu bạn thấy một loạt các lệnh GETSET, kết nối đã hoạt động.- Kiểm tra Log: Nếu vẫn không khắc phục được, hãy kiểm tra /var/log/redis/redis-server.log để tìm các lỗi cụ thể về bộ nhớ hoặc quyền truy cập.## Mẹo chuyên nghiệp để ổn định hệ thống- Quản lý bộ nhớ: Redis hoạt động trên RAM. Nếu máy chủ của bạn chỉ có 2GB RAM, hãy thiết lập giới hạn maxmemory 512mb trong redis.conf để nó không làm treo toàn bộ hệ điều hành.- Chính sách loại bỏ (Eviction Policy): Thiết lập maxmemory-policy allkeys-lru. Điều này yêu cầu Redis xóa các tệp đệm cũ nhất, ít được sử dụng nhất khi hết dung lượng, thay vì chỉ dừng hoạt động.

Related Error Notes