Tomcat MaxPostSize
개발을 하다보면 흔히 격지는 않지만, 나의 경우에는 지금과 같은 게시판 형태의 글이었는데, 엄청나게 많은 컨텐츠를submit을 했더니, 무슨 영문인지는 모르겠지만 처리가 안되고 tomcat 서버에서 에러가 발생했다. 이때 까지만 해도 get방식에만 parameter 최대 size 의 제한이 있는줄 알고 있었다. 하지만 왠걸 Post 에도 parameter Size 제한이 있었다.
Tomcat 공식 홈페이지 document
내용을 정리하기에 앞서 대부분의 내용은 apache tomcat 공식 홈페이지에 나와있는 내용이었다.
여기저기 검색하고 돌아다니기 보다는 공식 홈페이지의 document를 잘 분석하는게 훨씬 더 도움이 되었다.
아래에 Tomcat 공식 홈페이지 정보를 남겨 놓으니 참고 하시기 바랍니다.
예를 들어 maxPostSize의 옵션의 내용을 보고 싶다면 아래와 같은 경로로 이동하면 확인할수 있다.
공식홈페이지의 document를 찾아가는 방법도 습관을 들여야지 언제까지고 남들이 정리해논 한글문서만 찾다보면 정확한 정보를 얻기 힘들때가 있다.
1) 좌측매뉴 의 "Documentation" 매뉴
2) 해당하는 버전을 클릭
3) Reference > Configuration
4) Connector > HTTP/1.1
maxPostSize 설정 방법
Tomcat은 기본적으로 Post로 전송할 데이터의 크기를 최대2MB까지 Default로 잡고있다. 이 이상의 데이터전송을 하기 위해선 Tomcat의 server.xml의 Connector 엘리먼트에 maxPostSize 어트리뷰트를 추가하고 Value를 -1 으로 잡아주면 디폴드값이 해제된다. 아래를 통해서 자세히 알아보겠다.
<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="-1"/>
자세한 내용은 아래를 참조 하시기 바랍니다.
The maximum size in bytes of the POST which will be handled by the container FORM URL parameter parsing. The limit can be disabled by setting this attribute to a value less than zero. If not specified, this attribute is set to 2097152 (2 megabytes).
Post로 전송할수 있는 기본 용량은 2MB이고, 이 속성을 0 이나, 그보다 작은수로 설정하며 제한을 비활성화 시킬수 있다고 한다. 0, -1 또는 그보다 아래 값을 넣었을때도 해제가 될수 있다.
maxParameterCount 설정 방법
Get, Post전송의 경우는 파라미터의 갯수도 제한을 둔다. Post에만 해당하는것은 아니다. 제한을 두지 않을경우 기본적으로 10,000개까지가 사용이 가능하다. 나는 maxParameterCount 설정을 건들여 본적은 없다. 나의 경우 10년간 개발하면서 10,000이상의 파라미터를 넘길일인 없었다. maxParameterCount의 apache문서를 보면 아래와 같다.
The maximum number of parameter and value pairs (GET plus POST) which will be automatically parsed by the container. Parameter and value pairs beyond this limit will be ignored. A value of less than 0 means no limit. If not specified, a default of 10000 is used. Note that FailedRequestFilter filter can be used to reject requests that hit the limit.
컨테이너가 구문분석할 매개변수 값의 최대수 입니다. ( GET, Post ) 이 한계를 초과하는 파라미터는 무시됩니다. 아마도 요청시에 파라미터 값을 무시할것으로 생각된다. 계속 보자 0보다 작은 값은 제한이 없음을 의미 합니다. 지정하지 않으면 기본값 10000가 사용 됩니다.
참고문서
해당 문서는 apache-tomcat 5.5 ~ 9 버전을 기준으로 확인 했습니다. Tomcat 5.5, 6, 7, 8 9 버전까지는 설정이 동일하다고 보면 됩니다. 그 이상 이하, 버전의 문서는 확인해보지 않았지만 다를 이유가 없을것 같습니다. maxPostSize와 maxParameterCount를 적용한 예시를 보고 해당 포스팅은 마무리 합니다.
아래 tomcat9 설정 링크를 남겨 놓습니다.
<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="-1" maxParameterCount="-1"/>
※ 아래를 통해 Apache Tomcat 9 설정 가이드 문서를 확인해보시기 바랍니다.
댓글