Java Весенний пружинный микросервис исчерпал размер кучи на кубернетес - PullRequest
0 голосов
/ 06 февраля 2020

Поэтому я разработал микросервис с пружинной загрузкой, который принимает файл multipart, а затем перенаправляет его в другой сервис, работающий за пределами сети kubernetes.
Когда я загружаю файл размером более 20 МБ, я получаю следующую ошибку:

java.lang.OutOfMemoryError: Java heap space
    at java.base/java.util.Arrays.copyOf(Unknown Source) ~[na:na]
    at java.base/java.io.ByteArrayOutputStream.grow(Unknown Source) ~[na:na]
    at java.base/java.io.ByteArrayOutputStream.ensureCapacity(Unknown Source) ~[na:na]
    at java.base/java.io.ByteArrayOutputStream.write(Unknown Source) ~[na:na]
    at org.springframework.util.StreamUtils.copy(StreamUtils.java:143) ~[spring-core-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
    at org.springframework.http.converter.ResourceHttpMessageConverter.writeContent(ResourceHttpMessageConverter.java:132) ~[spring-web-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
    at org.springframework.http.converter.ResourceHttpMessageConverter.writeInternal(ResourceHttpMessageConverter.java:124) ~[spring-web-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
    at org.springframework.http.converter.ResourceHttpMessageConverter.writeInternal(ResourceHttpMessageConverter.java:45) ~[spring-web-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
    at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:227) ~[spring-web-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
    at org.springframework.http.converter.FormHttpMessageConverter.writePart(FormHttpMessageConverter.java:417) ~[spring-web-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
    at org.springframework.http.converter.FormHttpMessageConverter.writeParts(FormHttpMessageConverter.java:393) ~[spring-web-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
    at org.springframework.http.converter.FormHttpMessageConverter.writeMultipart(FormHttpMessageConverter.java:373) ~[spring-web-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
    at org.springframework.http.converter.FormHttpMessageConverter.write(FormHttpMessageConverter.java:277) ~[spring-web-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
    at org.springframework.http.converter.FormHttpMessageConverter.write(FormHttpMessageConverter.java:95) ~[spring-web-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
    at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:948) ~[spring-web-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]

Сам сервис не создает sh. Количество барана не должно быть проблемой. Сначала я установил его на 512 МБ, а затем увеличил до 1024 МБ

   limits:
     cpu: 200m
     memory: 1024Mi
   requests:
     cpu: 200m
     memory: 1024Mi

Код java, обрабатывающий загрузку:

params.add("file", new MultipartInputStreamFileResource(multipartfile.getInputStream(),
                    multipartfile.getOriginalFilename()));

            UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(requestUrl);
            for (Entry<String, List<Object>> entry : params.entrySet()) {
                builder.queryParam(entry.getKey(), entry.getValue());
            }

            HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
            restTemplate.postForObject(requestUrl, requestEntity, String.class);

Java пружина работает по умолчанию настройки. Я только увеличил максимальный загружаемый файл tomcat ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...