예전에 질문글을 올리고 나서 ModSecurity 등을 해제했는데도 불구하고
여전히 관리자 페이지에서 캐시 재생성을 시도하면 거의 80% 이상의 확률로 로딩만 지속되다가 500 에러를 뿜네요
여전히 SSH로 접속해서 rm -rf cache로 삭제하면 정상적으로 삭제됩니다.
아 그리고, 삭제하는 도중에 확인해보니까 cache_1474611642 뭐 이런 폴더들이 생기던데 이건 뭔가요?
좀 지나고 나서 보니까 사라져 있더군요
예전에 질문글을 올리고 나서 ModSecurity 등을 해제했는데도 불구하고
여전히 관리자 페이지에서 캐시 재생성을 시도하면 거의 80% 이상의 확률로 로딩만 지속되다가 500 에러를 뿜네요
여전히 SSH로 접속해서 rm -rf cache로 삭제하면 정상적으로 삭제됩니다.
아 그리고, 삭제하는 도중에 확인해보니까 cache_1474611642 뭐 이런 폴더들이 생기던데 이건 뭔가요?
좀 지나고 나서 보니까 사라져 있더군요
XE의 cache 폴더는 램디스크를 사용하거나 다른 파티션에 연결할 수 없습니다. 내용만 삭제하는 게 아니라 폴더 이름을 바꾼 후 새로 만들기 때문에 마운트 포인트가 증발해 버려요 ㅠ
캐시파일 재생성 과정에서 언마운트하고 다시 마운트하도록 코어를 수정한다면 가능할지도 모르겠네요.
XE(라이믹스)에서 캐시파일 재생성은 아래의 순서로 진행됩니다.
1. 기존의 cache 폴더를 이름만 바꿔서 옆으로 치워둡니다. cache_1474 어쩌고 하는 폴더가 이거예요.
2. cache 폴더를 새로 만듭니다.
3. 각 모듈에게 꼭 필요한 캐시파일을 생성하라고 알려줍니다.
4. 아까 치워둔 폴더를 삭제합니다.
폴더를 제자리에서 삭제하지 않고 일단 옆으로 치워두는 이유는, 폴더를 삭제하는 사이에 다른 모듈에서 캐시파일을 또 생성하려고 시도할 수도 있기 때문입니다. 한쪽에서는 계속 지우려고 하고 다른 쪽에서는 계속 만들려고 하면 문제가 생기겠지요? 그래서 폴더 이름을 단번에 바꿔버려서 다른 모듈들이 끼어들 여지를 주지 않습니다.
시간이 오래 걸리다가 결국 실패하는 것은 대부분 3~4단계입니다.
3단계에서 실패하는 경우는 설치된 모듈 중 하나가 캐시파일 재생성 작업 도중 시간을 너무 오래 끌거나 오류를 뿜는 경우입니다. 이럴 때는 캐시파일 재생성 후에도 여전히 오류가 날 수 있습니다.
4단계에서 실패하는 경우는 캐시파일 수가 너무 많아서 삭제하는 데 너무 오래 걸리거나, 퍼미션이 잘못된 파일이 있어서 삭제할 수 없는 경우입니다. 그러나 일단 3단계까지 마쳤다면 4단계에 실패하더라도 문제가 생기지는 않습니다. 새로 만든 cache 폴더가 제 역할을 하고 있을 테니, 더이상 필요하지도 않고 사용하지도 않는 폴더 하나가 용량을 차지하고 있을 뿐이예요. 이런 건 수동으로 지워주면 그만입니다.
두 경우 모두 예전 캐시파일은 cache_1474 어쩌고 하는 폴더로 옮겨졌고, 남아 있는 cache 폴더는 새로 만든 것이므로 일부러 지워줄 필요는 없습니다.
라이믹스에서는 4단계 실패율을 줄이기 위해 자체적으로 rm -rf 명령 사용을 시도합니다. 그러나 퍼미션이나 서버 설정 때문에 이 명령을 사용할 수 없다면 XE와 마찬가지로 오류가 발생할 가능성이 있습니다.