MOSS/WSS 의 대용량 파일 업로드 설정하기

안녕하세요. 흔히 문의가 들어오는 부분인 대용량 파일 업로드 설정 부분을 정리해 드립니다. MOSS 가 여러 기술 스택을 활용하는 제품이다 보니, 자연히 설정을 하는 곳이 여러 군데로 나뉘어 있어 조금 복잡하게 생각하시는 분들이 많으신 것 같습니다. 아래 절차를 따라서 한번 설정해 보시기 바랍니다.

1. SharePoint 중앙 관리에서의 설정 변경

업로드 제한의 변경

Central Administration > Application Management > Web Application General Settings 에서 Maximum upload size 를 바꿉니다. 최대 2GB (2047) 까지 설정할 수 있습니다. 여러 개의 파일을 동시에 올릴 경우 그 크기의 합이 이 설정값을 넘을 수 없습니다.

사이트 용량 제한 점검

사이트 용량 제한이 최대 파일 크기보다 낮게 설정되어 있는지 체크해 주십시오.

2. IIS 설정 변경

IIS Connection Timeout 변경

IIS 연결 타임 아웃 설정을 바꾸어 주어야 합니다. 기본 설정은 2분이기 때문에 업로드 시간이 2분이 넘어가는 큰 파일들은 중간에 오류를 일으키게 됩니다. 인트라넷의 속도를 고려하셔서 목표로 하시는 제한 크기의 파일이 안전하게 업로드 될 수 있는 시간으로 설정하시면 됩니다. 이 설정은 IIS 관리자에서 사이트를 선택하시고 Advanced Settings 에서 설정하실 수 있습니다. (IIS 7.0기준)

image

LAYOUT 폴더의 ExecutionTimeout 값의 변경

%HomeDrive%\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\Web.config 파일을 수정합니다. 

<location path="upload.aspx">

   <system.web>

     <httpRuntime maxRequestLength="2097151" /> 이 라인을

     <httpRuntime executionTimeout="999999" maxRequestLength="2097151" /> 로 바꿉니다.

   </system.web>

</location>

maxRequestLength 에 대한 설명은 https://msdn.microsoft.com/en-us/library/e1f13641.aspx 를 참고 바랍니다.

각 웹어플리케이션의 ExecutionTimeout 값의 변경

%HomeDrive%\Inetpub\wwwroot\wss\VirtualDirectories\VirtualDirectoryFolder 에서

<httpRuntime maxRequestLength="51200" /> 라인을

<httpRuntime executionTimeout="999999" maxRequestLength="51200" /> 로 바꿉니다.

참고) 여기서 maxRequestLength 의 51200 은 50* 1024 즉 50 MB 를 뜻하는 것입니다. 이 값을 50MB 로 놔둬도 아래의 나머지 세팅을 해 주면 문서 라이브러리에 대용량 파일 업로드는 문제가 없지만 공지사항이나 토론 같은 리스트의 첨부는 여전히 50MB 을 넘을 수 없습니다. 따라서 리스트 첨부로 큰 파일을 올리고자 할 때에는 이 값을 늘려 주어야 합니다. 예를 들어 리스트 첨부를 300MB 까지 허용한다면 300 * 1024 = 307200 을 세팅해 주면 됩니다.

Windows 2008 /IIS7 환경의 경우 추가 요소

각 웹 어플리케이션의 폴더에서 %HomeDrive%\Inetpub\wwwroot\wss\VirtualDirectories\VirtualDirectoryFolder Web.config 파일에 아래 부분을 추가합니다.

<system.webServer>

  <security>

    <requestFiltering>

      <requestLimits maxAllowedContentLength="52428800"/>

    </requestFiltering>

  </security>

</system.webServer>

52428800 은 50 MB 입니다. 이 값은 업로드를 허용할 최대 크기보다 약간 더 크게 설정되어야 합니다. 예를 들어 한도가 300MB 로 하고 싶다면 301*1024*1024 = 315621376 정도로 설정하시면 됩니다.

3.large-file-chunk-size 속성의 조정

large-file-chunk-size 속성은 웹서버가 SQL 에 한번에 읽거나 쓰는 크기입니다. 기본값은 5MB 로 설정되어 있는데, 이 경우 70MB 파일을 SQL 로 넣어주는데 14번의 Write 작업이 생기게 됩니다. 이 값을 늘려주면 웹서버와 SQL 간의 통신횟수가 줄어듦으로써 업로드 속도의 향상을 가져올 수 있습니다. 주의할 점은 이 속성값을 너무 크게 하면 웹프런트엔드 서버의 메모리 사용량이 많아집니다. 이 값을 설정하는데 있어 절대적인 수치는 없으며, 프런트 엔드 메모리가 넉넉하신 분은 메모리 사용량을 보시면서 조금씩 늘려서 조정하시면 됩니다.

STSADM

Large-file-chunk-size: Stsadm property (Office SharePoint Server) 을 참고하면 MB 단위라고 되어있는데, 바이트 단위로 되어야 합니다. 우선 getproperty 로 기본값을 보면 아래와 같이 나옵니다. 5*1024*1024

stsadm -o getproperty -propertyname large-file-chunk-size

<Property Exist="Yes" Value="5242880" />

따라서 10MB 씩 읽어들이도록 하려면, 10 * 1024 * 1024 = 10485760 이 되어야 하고 명령어는 아래와 같습니다.

stsadm -o setproperty -pn large-file-chunk-size -pv 10485760

명령어 수행 후 IISREST 해 줍니다.

4. 웹파트 최대 크기의 조정

디폴트로 웹파트의 사이즈 제한은 1MB 로 되어 있습니다. 더 큰 크기의 웹파트를 사용하시고자 하는 분들은 이 값을 변경해 주어야 합니다. 각 웹 어플리케이션의 폴더에서 %HomeDrive%\Inetpub\wwwroot\wss\VirtualDirectories\VirtualDirectoryFolder Web.config 파일의 아래 부분을 수정합니다.

<WebPartLimits MaxZoneParts="50" PropertySize="1048576" />

예를 들어 2MB 라면 2 * 1024 * 1024 = 2097152

<WebPartLimits MaxZoneParts="50" PropertySize="2097152" />

5. 사용자 PC 의 파라미터 조정

특정 사용자의 업로드 속도만 느릴 경우는 인터넷 익스플로러의 보내기 버퍼 크기를 조정해 볼 수 있습니다.

https://support.microsoft.com/default.aspx/kb/329781 를 참고 부탁 드립니다.

참고

 

Error message when you try to upload a large file to a document library on a Windows SharePoint Services 3.0 site: "Request timed out"

HTTP File Upload Operation Takes a Long Time to Complete

Installing and Using Service Packs for Windows SharePoint Services

Chihun Song

TSP-SharePoint / Microsoft Korea