최근에 Discourse를 3.4.0.beta1에서 3.4.0.beta3로 업데이트했습니다. 업데이트 후 포럼의 메모리 사용량이 점차 증가하여 애플리케이션이 다운되는 현상을 확인하고 있습니다. 서버를 점검해 보니 redis-server가 메모리의 95%를 차지하고 있는 것으로 나타났습니다.
현재 redis-cli flushall을 매일 실행하여 문제를 일시적으로 해결하고 있습니다. Discourse 인스턴스는 Docker에서 호스팅되고 있습니다.
이전 버전으로 다운그레이드를 시도해 보았으나, 재빌드 과정에서 몇 가지 오류가 발생했습니다.
임시 해결책으로 Redis 메모리를 정리하는 작은 bash 스크립트를 작성했으며, cron 작업을 통해 매일 오전 6시에 실행되도록 설정했습니다.
참고: 로그는 /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 launcher 실행 및 출력을 로그 파일에 저장 (호스트 측)
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