활성화된 커뮤니티등에서의 첨부파일 저장경로에 대해서..
링크
https://kldp.org/node/39194#comment-130440 (61) http://opencode.co.kr/bbs/board.php?bo_table=gnu4_tips&wr_id=568 (49)
버그는 아닙니다.
현재 배포되는 그누5 정식버전에서의 첨부파일 저장에 대한 사항입니다.
현재는
/data/file/게시판이름 아래에 각 첨부파일, 에디터 삽입이미지 들이 모두 저장되는 형태인데요.
수십만건의 게시물이 등록될만큼 활성화된 커뮤니티에서는 첨부파일도 그만큼 많은 파일이
한 디렉토리내에 존재하게 마련인데요. 이경우 서버시스템상에 성능저하가 있거든요.
단적인 예로 백업/이전/복구등을 위해 전체 디렉토리를 압축하는 경우 첨부파일이 많은 디렉토리 access시
시스템에 부하가 많이 걸립니다. 물론 실제 압축/복구하는 시간도 많이 걸리며 특정첨부파일을 강제로 찾기위해
ftp나 ssh 를 이용해서 ls 명령을 사용할 경우 조회가 힘들기도 합니다.
그리고 write_update.php 에서의 첨부파일 뿐만아니라 thumbnail.lib.php 에서도 생성되는 썸네일파일들도 같은 경로에
썸네일을 생성함으로 실제 파일갯수는 첨부파일보다 몇배가 더 많아 지기도 합니다.
해당사항과 관련되어서는 링크1 - 리눅스(윈도우역시 디스크 io 와 관련된 부하는 비슷할겁니다 아마도..) 서버에서의
파일저장 갯수 제한 이슈에 대해 아래와 같이 나와 있습니다. ext2 시스템과 관련된 사항이기는 합니다만..
////////////////////////////////////////////////////////////
커널 소스의 Documentation/filesystems/ext2.txt 내용을 참고하시면 다른 한계도 찾아보실 수 있습니다. 일부 여기 적어보자면-
* 한 디렉토리 내의 최대 서브디렉토리 개수는 32768 개
* 한 디렉토리 내의 이론적인 최대 파일 개수는 130 조 개 이상
* 한 디렉토리 내의 실질적인 최대 파일 개수는 10000 ~ 15000 (이 이상일 경우 속도 저하가 심각합니다)
////////////////////////////////////////////////////////////
링크 2에 불당님이 남기신글을 참고하시기 바랍니다.
불당님이 남기신 글은 그누보드소스에서 첨부파일 저장을 게시판이름 아래에 년월별로 저장하는 것에 대한 수정내용이 언급되어 있습니다.
불당님이 작성하신 내용은 그누4에 해당되는 소스입니다만 그누5에 맞게 적절히 수정해서 사용하면 될듯 합니다.
ps. 그누보드 개발팀에서 개선하여 배포버전 자체에 적용하여 주시는 것도 나쁘지 않을듯 싶네요.
작업하다가 썸네일생성과 관련된 소스 살펴보다 생각나서 뻘 글 남겨봅니다.
현재 배포되는 그누5 정식버전에서의 첨부파일 저장에 대한 사항입니다.
현재는
/data/file/게시판이름 아래에 각 첨부파일, 에디터 삽입이미지 들이 모두 저장되는 형태인데요.
수십만건의 게시물이 등록될만큼 활성화된 커뮤니티에서는 첨부파일도 그만큼 많은 파일이
한 디렉토리내에 존재하게 마련인데요. 이경우 서버시스템상에 성능저하가 있거든요.
단적인 예로 백업/이전/복구등을 위해 전체 디렉토리를 압축하는 경우 첨부파일이 많은 디렉토리 access시
시스템에 부하가 많이 걸립니다. 물론 실제 압축/복구하는 시간도 많이 걸리며 특정첨부파일을 강제로 찾기위해
ftp나 ssh 를 이용해서 ls 명령을 사용할 경우 조회가 힘들기도 합니다.
그리고 write_update.php 에서의 첨부파일 뿐만아니라 thumbnail.lib.php 에서도 생성되는 썸네일파일들도 같은 경로에
썸네일을 생성함으로 실제 파일갯수는 첨부파일보다 몇배가 더 많아 지기도 합니다.
해당사항과 관련되어서는 링크1 - 리눅스(윈도우역시 디스크 io 와 관련된 부하는 비슷할겁니다 아마도..) 서버에서의
파일저장 갯수 제한 이슈에 대해 아래와 같이 나와 있습니다. ext2 시스템과 관련된 사항이기는 합니다만..
////////////////////////////////////////////////////////////
커널 소스의 Documentation/filesystems/ext2.txt 내용을 참고하시면 다른 한계도 찾아보실 수 있습니다. 일부 여기 적어보자면-
* 한 디렉토리 내의 최대 서브디렉토리 개수는 32768 개
* 한 디렉토리 내의 이론적인 최대 파일 개수는 130 조 개 이상
* 한 디렉토리 내의 실질적인 최대 파일 개수는 10000 ~ 15000 (이 이상일 경우 속도 저하가 심각합니다)
////////////////////////////////////////////////////////////
링크 2에 불당님이 남기신글을 참고하시기 바랍니다.
불당님이 남기신 글은 그누보드소스에서 첨부파일 저장을 게시판이름 아래에 년월별로 저장하는 것에 대한 수정내용이 언급되어 있습니다.
불당님이 작성하신 내용은 그누4에 해당되는 소스입니다만 그누5에 맞게 적절히 수정해서 사용하면 될듯 합니다.
ps. 그누보드 개발팀에서 개선하여 배포버전 자체에 적용하여 주시는 것도 나쁘지 않을듯 싶네요.
작업하다가 썸네일생성과 관련된 소스 살펴보다 생각나서 뻘 글 남겨봅니다.
|
댓글을 작성하시려면 로그인이 필요합니다.
댓글 1개
코드 수정으로 인한 테스트 및 기존 사용자들의 혼란 등 여러 이유로 실제 배포코드에 적용하는 것은 쉽지 않을 것 같습니다.