Подтвердить что ты не робот

Максимальный допустимый размер HttpRequest в tomcat?

Каков максимальный размер данных, который я могу отправить в одном HttpURLConnection к Tomcat? Есть ли ограничения по размеру запроса?

4b9b3361

Ответ 1

Раздел имеет параметр

maxPostSize

Максимальный размер в байтах POST, который будет обрабатываться обработкой параметров URL-адреса контейнера FORM. Предел можно отключить, установив этот атрибут на значение, меньшее или равное 0. Если не указано, этот атрибут установлен в 2097152 (2 мегабайта).

Другой лимит:

maxHttpHeaderSize Максимальный размер HTTP-заголовка запроса и ответа, указанного в байтах. Если не указано, этот атрибут установлен в 4096 (4 КБ).

Вы найдете их в

$TOMCAT_HOME/conf/server.xml

Ответ 2

Вы должны изменить два возможных предела:

В 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

Чтобы добавить ответы, сервер приложений Apache Geronimo 3.0 использует Tomcat 7 в качестве веб-сервера, а в этой среде файл server.xml находится по адресу <%GERONIMO_HOME%>/var/catalina/server.xml.

Конфигурация вступает в силу, даже если консоль Geronimo at Application Server->WebServer->TomcatWebConnector->maxPostSize по-прежнему отображает 2097152 (значение по умолчанию)

Ответ 4

Хотя другие ответы включают в себя некоторые из следующих сведений, это абсолютный минимум, который необходимо изменить в экземплярах EC2, особенно в отношении развертывания больших файлов WAR, и он наименее вероятно может вызвать проблемы при будущих обновлениях. Я сталкивался с этими ограничениями примерно раз в два года из-за постоянно увеличивающегося размера файла WAR Jenkins (сейчас ~ 72 МБ).

Более конкретно, этот ответ применим, если вы столкнулись с вариантом следующей ошибки в 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)]

В экземплярах Amazon EC2 Linux единственный файл, который необходимо изменить из установки Tomcat по умолчанию (sudo yum install tomcat8):

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

По умолчанию максимальный размер загрузки составляет ровно 50 МБ:

<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, поэтому любые изменения исходного файла не будут перезаписаны во время будущих обновлений.

Ответ 5

Полный ответ

1. По умолчанию (новая установка tomcat)

Когда вы загружаете tomcat со своего официального веб-сайта (сегодня tomcat версии 9.0.26), все приложения, установленные на tomcat, могут обрабатывать HTTP-запросы неограниченного размера, учитывая, что сами приложения не имеют никаких ограничений. по запросу.

Однако, когда вы пытаетесь загрузить приложение в приложение tomcat manager, для этого файла по умолчанию установлен предел для файла войны 50 МБ. Например, если вы пытаетесь установить Jenkins, размер которого сегодня составляет 77 МБ, произойдет сбой.

2. Настройте ограничение размера запросов http для каждого порта

Сам Tomcat имеет ограничение размера для каждого порта, и это определено в conf\server.xml. Это контролируется атрибутом maxPostSize каждого Connector (порта). Если этот атрибут не существует, что по умолчанию, нет ограничений на размер запроса.

Чтобы добавить ограничение для определенного порта, установите размер байта для атрибута. Например, приведенная ниже конфигурация для порта 8080 по умолчанию ограничивает размер запроса до 200 МБ. Это означает, что все приложения, установленные под портом 8080, теперь имеют ограничение в размере 200 МБ

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

3. Настроить ограничение размера уровня приложения

После преодоления ограничения размера уровня порта вы все равно можете настроить ограничение уровня приложения. Это также означает, что ограничение уровня приложения должно быть меньше, чем ограничение уровня порта. Ограничение может быть сделано с помощью аннотации в каждом сервлете или в файле 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>

4. Приложение. Если при попытке установить приложение с помощью приложения Tomcat Manager появляется ошибка размера файла,

Приложение Tomcat Manager (по умолчанию localhost: 8080/manager) - это не что иное, как веб-приложение по умолчанию. По умолчанию это приложение имеет web.xml конфигурацию ограничения запросов 50 МБ. Чтобы установить (загрузить) приложение размером более 50 МБ через это приложение-менеджер, необходимо изменить ограничение. Откройте файл web.xml приложения менеджера из webapps\manager\WEB-INF\web.xml и следуйте приведенному выше руководству, чтобы изменить ограничение размера и, наконец, перезапустить tomcat.