- อูบุนตู 20.04.3 LTS x86_64
- ช่อง-redis==3.2.0
- Nginx -> Daphne -> redis/django
- คำสั่งเริ่มต้น: "sudo docker run -p 6379:6379 -d redis:5"
การตั้งค่า Django:
'ค่าเริ่มต้น': {
'แบ็คเอนด์': 'channels_redis.core.RedisChannelLayer'
'การกำหนดค่า': {
"โฮสต์": [('127.0.0.1', 6379)],
},
},
}
ปัญหา:
หลังจากผ่านไปประมาณ 12 ถึง 48 ชั่วโมง (โดยประมาณ แตกต่างกันในแต่ละครั้ง) redis-server (คำสั่งบนสุดเรียกมันว่า "redis2" ในบางครั้ง และ "redis-server" ในบางครั้ง) จู่ๆ ก็ใช้ CPU ทั้งหมดที่ทำได้ ไม่มากก็น้อย อิฐทั้งระบบ Redis-cli ไม่ตอบสนองโดยสิ้นเชิง Redis ทำงานได้ดีอย่างสมบูรณ์จนกว่าจะถึงเวลานั้น เช่น ไม่โลภกับ CPU และทำงานตามที่คาดไว้
การรัน "docker logs" ให้ผลลัพธ์ต่อไปนี้ (ในการใช้งาน CPU ปกติ)
1:M 11 ธ.ค. 2564 18:18:58.137 # เกิดข้อผิดพลาดในการบันทึกพื้นหลัง
1:M 11 ธันวาคม 2021 18:19:04.051 * 1 การเปลี่ยนแปลงใน 3600 วินาที ประหยัด...
1:M 11 ธันวาคม 2021 18:19:04.051 * การบันทึกพื้นหลังเริ่มต้นโดย pid 7098
7098:C 11 ธ.ค. 2021 18:19:04.052 # ไม่สามารถเปิดรูทไฟล์ RDB (ในรูทเซิร์ฟเวอร์ dir /etc) เพื่อบันทึก: สิทธิ์ถูกปฏิเสธ
ที่ถูกสแปมไปยังคอนโซลในขณะที่มันทำงานตามปกติ เช่น CPU ไม่เต็ม
สิ่งนี้ถูกต้องหรือไม่ เหตุใด "/ etc" จึงเป็นเซิร์ฟเวอร์รูท ไม่มี "/etc/redis/..." หรือ "/var/logs/redis..." เช่นกัน
เช่นเดียวกับ "การบันทึกพื้นหลังที่เริ่มต้นโดย pid 7098" ก็เป็น pid ใหม่เสมอ นับขึ้น ดังนั้นจึงไม่แน่ใจว่าสิ่งนี้นำไปสู่การตายในที่สุดหรือไม่
ฉันยังเชื่อมโยง "grafana" เพื่อตรวจสอบ (เพียงแค่การตรวจสอบทรัพยากรเซิร์ฟเวอร์ / ยูทิลิตี้อื่น) ณ จุดที่มีการใช้งาน CPU สูงสุด granfan จะไม่สามารถรับข้อมูลจากมันได้อีกต่อไป ดังนั้นตายแน่นอน
สิ่งสำคัญที่สุดคือบันทึกควรจะไปที่ไหน? ดังที่ได้กล่าวไว้ก่อนหน้านี้ ไม่มี /var/logs สำหรับ redis ในคอนเทนเนอร์นักเทียบท่า