لقد قمت مؤخرًا بتحديث Discourse من الإصدار 3.4.0.beta1 إلى 3.4.0.beta3. بعد التحديث، لاحظنا أن استخدام ذاكرة المنتدى يتزايد تدريجيًا، مما يتسبب في تعطل التطبيق. عند التحقق من الخادم، يمكننا رؤية أن redis-server يستهلك 95٪ من الذاكرة.
نقوم بتشغيل redis-cli flushall يوميًا لحل المشكلة مؤقتًا. يتم استضافة مثيل Discourse في Docker.
حاولت الرجوع إلى الإصدار السابق، لكنه كان يرمي بعض الأخطاء أثناء إعادة البناء.
كحل مؤقت، قمت بإنشاء نص برمجي صغير بلغة bash لتنظيف ذاكرة Redis وتعيينه للتشغيل كل يوم في الساعة 6 صباحًا باستخدام مهمة cron.
ملاحظة: أقوم بحفظ السجل في /home/ubuntu/logs. يمكنك تجاهله إذا لم تكن بحاجة إليه.
#!/bin/bash
# تعيين دليل السجل واسم الملف
LOG_DIR="/home/ubuntu/logs"
LOG_FILE="$LOG_DIR/redis.cleanup.$(date +\%Y-\%m-\%d).log"
# التأكد من وجود دليل السجل
mkdir -p "$LOG_DIR"
# تسجيل معلومات حول البيئة الحالية (جانب المضيف)
echo "Running script at $(date)" >> "$LOG_FILE"
# تشغيل مشغل discourse في التطبيق وحفظ المخرجات في ملف السجل (جانب المضيف)
echo "redis cleanup command" >> "$LOG_FILE"
docker exec app redis-cli flushall >> "$LOG_FILE" 2>&1
# الإشارة إلى أن النص البرمجي قد اكتمل بنجاح (جانب المضيف) والخروج
echo "Script completed successfully at $(date)" >> "$LOG_FILE"
exit 0
تحديث: يبدو أنه تم إصلاحه تلقائيًا. الآن بعد أن تذكرت، كانت لدينا مشكلة مماثلة في المرة الأخيرة عندما قمنا بتحديث الإصدار، واستمرت الذاكرة في الارتفاع، لكنها أصلحت نفسها بعد فترة. يبدو أنه خطأ.
122 مليون مهمة في قائمة الانتظار تظهر بالتأكيد أن هناك خطأ ما
كم عدد المستخدمين لديك في Discourse؟
كم عدد قنوات chat الموجودة؟
كم عدد المستخدمين في أكبر 3 قنوات chat لديك؟