- Ubuntu 20.04.3 LTS x86_64
- kênh-redis==3.2.0
- Nginx -> Daphne -> redis/django
- lệnh để bắt đầu: "sudo docker run -p 6379:6379 -d redis:5"
Cài đặt Django:
'mặc định': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CẤU HÌNH': {
"máy chủ": [('127.0.0.1', 6379)],
},
},
}
Vấn đề:
Sau khoảng 12 đến 48 giờ (đại khái, mỗi lần khác nhau) redis-server (lệnh hàng đầu đôi khi gọi nó là "redis2" và "redis-server" vào những lần khác) đột nhiên tiêu thụ tất cả CPU mà nó có thể, ít nhiều làm hỏng toàn bộ hệ thống. Redis-cli hoàn toàn không phản hồi. Redis chạy hoàn toàn tốt cho đến lúc đó, tức là không tham lam với CPU và thực hiện công việc như mong đợi.
Chạy "docker log" mang lại kết quả như sau (khi sử dụng CPU bình thường).
1:M Ngày 11 tháng 12 năm 2021 18:18:58.137 # Lỗi lưu nền
1:M 11/12/2021 18:19:04,051 * 1 thay đổi trong 3600 giây. Tiết kiệm...
1:M ngày 11 tháng 12 năm 2021 18:19:04.051 * Lưu nền bắt đầu bởi pid 7098
7098:C 11 tháng 12 năm 2021 18:19:04.052 # Không thể mở tệp gốc RDB (trong thư mục gốc của máy chủ /etc) để lưu: Quyền bị từ chối
Điều đó đang được gửi thư rác đến bảng điều khiển trong khi nó đang chạy bình thường, tức là CPU không tối đa.
Điều này có đúng không? Tại sao "/etc" là gốc của máy chủ? Không có "/etc/redis/..." hoặc "/var/logs/redis...".
Đồng thời, "Tiết kiệm nền bắt đầu bởi pid 7098" luôn là một pid mới. Đếm lên. Vì vậy, không chắc chắn nếu điều này cuối cùng dẫn đến cái chết của nó.
Tôi cũng đã liên kết "grafana" để giám sát nó (chỉ một trình giám sát tài nguyên máy chủ/tiện ích khác). Tại thời điểm sử dụng CPU tối đa, granfan không thể lấy thông tin từ nó nữa. Thế là nó chết chắc.
Quan trọng nhất, các bản ghi phải đi đâu? Như đã nói trước đây, không có /var/logs cho redis trong bộ chứa docker của nó.