代码之家  ›  专栏  ›  技术社区  ›  mabuzer

HttpRequest tomcat中允许的最大大小?

  •  46
  • mabuzer  · 技术社区  · 15 年前

    一次发送的最大数据量是多少 HttpURLConnection Tomcat

    5 回复  |  直到 7 年前
        1
  •  57
  •   stacker    15 年前

    这个 connector section 具有参数

    容器表单URL参数解析将处理的文章的最大大小(以字节为单位)。可以通过将此属性设置为小于或等于0的值来禁用限制。如果未指定,则将此属性设置为2097152(2 MB)。

    最大HttpHeaderSize 请求和响应HTTP头的最大大小,以字节为单位指定。如果未指定,则此属性设置为4096(4 KB)。

    你发现他们在

    $TOMCAT_HOME/conf/server.xml
    
        2
  •  68
  •   Freeman    13 年前

    conf\server.xml

    <Connector port="80" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443"
                    maxPostSize="67589953" />
    

    webapps\manager\WEB-INF\web.xml

    <multipart-config>
      <!-- 52MB max -->
      <max-file-size>52428800</max-file-size>
      <max-request-size>52428800</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>
    
        3
  •  11
  •   Fangming    6 年前

    完整的答案

    1.默认值(tomcat的新安装)

    无限大小 ,因为应用程序本身对请求大小没有任何限制。

    50兆 . 例如,如果您尝试安装Jenkins,它今天的ot容量为77mb,它将失败。

    2.配置tomcat的每端口http请求大小限制

    Tomcat本身有大小限制 ,这是在中定义的 conf\server.xml . 这是由 maxPostSize Connector (端口)。如果此属性不存在(默认情况下是这样),则存在 无限制

    要向特定端口添加限制,请为属性设置字节大小。例如,下面的默认8080端口配置将请求大小限制为200 MB。这意味着所有安装在8080端口下的应用程序现在都有200MB的大小限制

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxPostSize="209715200" />
    

    通过端口级别大小限制后,仍然可以配置应用程序级别限制。这也意味着应用程序级别限制应该小于端口级别限制。可以通过每个servlet内的注释或web.xml文件中的注释来完成限制。再说一次,如果这一点都没有设置,那么 无限制

    通过java注解设置限制

    @WebServlet("/uploadFiles")
    @MultipartConfig( fileSizeThreshold = 0, maxFileSize = 209715200, maxRequestSize = 209715200)
    public class FileUploadServlet extends HttpServlet {
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) {
            // ...
        }
    }
    

    通过web.xml设置限制

    <web-app>
      ...
      <servlet>
        ...
        <multipart-config>
          <file-size-threshold>0</file-size-threshold>
          <max-file-size>209715200</max-file-size>
          <max-request-size>209715200</max-request-size>
        </multipart-config>
        ...
      </servlet>
      ...
    </web-app>
    

    Tomcat的Manager应用程序(默认情况下localhost:8080/manager)只是一个默认的web应用程序。默认情况下,该应用程序具有 web.xml 请求限制的配置 50兆 webapps\manager\WEB-INF\web.xml 并按照上面的指南更改大小限制,最后重新启动tomcat。

        4
  •  2
  •   miken32 Amit D    9 年前

    为了补充答案,App Server apachegeronimo 3.0使用tomcat7作为web服务器,在该环境中,Server.xml文件位于 <%GERONIMO_HOME%>/var/catalina/server.xml .

    即使Geronimo控制台处于 Application Server->WebServer->TomcatWebConnector->maxPostSize

        5
  •  2
  •   Parker    7 年前

    尽管其他答案包括以下一些信息,但这是EC2实例上需要更改的绝对最小值, ,并且最不可能在将来的更新过程中引起问题。由于Jenkins WAR文件的大小不断增加(现在约72MB),我每隔一年就会遇到这些限制。

    更具体地说,如果您在中遇到以下错误的变体,则此答案适用 catalina.out :

    SEVERE [https-jsse-nio-8443-exec-17] org.apache.catalina.core.ApplicationContext.log HTMLManager:
    FAIL - Deploy Upload Failed, Exception:
    [org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException:
    the request was rejected because its size (75333656) exceeds the configured maximum (52428800)]
    

    在amazonec2linux实例上 sudo yum install tomcat8 )是:

    /usr/share/tomcat8/webapps/manager/WEB-INF/web.xml
    

    默认情况下,最大上载大小正好为50MB:

    <multipart-config>
      <!-- 50MB max -->
      <max-file-size>52428800</max-file-size>
      <max-request-size>52428800</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>
    

    只有两个值需要修改( max-file-size max-request-size ):

    <multipart-config>
      <!-- 100MB max -->
      <max-file-size>104857600</max-file-size>
      <max-request-size>104857600</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>
    

    在这些实例上升级Tomcat时,新版本的管理器 web.xml 将放置在 web.xml.rpmnew