GCS - ошибка кучи при загрузке файла большего размера

0

Я хочу загрузить размер файла 400 МБ в Google Cloud Storage. Ниже приведен фрагмент кода, который я использую для загрузки URL-адреса и для публикации в angularjs

Java Servlet:

UploadOptions opts = UploadOptions.Builder
        .withGoogleStorageBucketName(GCS_BUCKET_NAME);
String url = blobstore.createUploadUrl("/upload", opts);

AngularJS:

$scope.formData.append('file', $scope.filename);

$http.post(uploadUrl, $scope.formData, {
    withCredentials: true,
    headers: {
        'Content-Type': undefined
    },
    transformRequest: angular.identity
})

Код работает нормально, пока размер файла не превышает 100-150 МБ, когда размер файла выше, я получил следующую ошибку в консоли браузера.

Failed to load resource: the server responded with a status of 500 (Java heap space)

Что мне нужно сделать, чтобы избежать этой ошибки?

  • 0
    Эта ошибка происходит на сервере разработки или в производстве?
  • 0
    Привет @EricSimonton Вы правы! Проблема возникает только с сервером разработки, а не с производством.
Теги:
google-cloud-platform
google-cloud-storage

1 ответ

1
Лучший ответ

Как вы сказали в своем ответе на мой вопрос выше, это происходит только в развитии, а не в производстве. Я предполагаю, что код Google blobstore считывает весь запрос в память на своем сервере разработки, но это трудно сказать, потому что у нас нет доступа к этому коду. Если вам нужно протестировать большие загрузки в dev, вы можете попробовать настроить ваш сервер-dev для запуска с большим объемом памяти. Похоже, я использую -Xmx512M (в разделе " -Xmx512M VM" конфигурации запуска в eclipse), вы даже можете попробовать еще. Или, если это не важно в dev, вы можете просто протестировать меньшие закачки и надеяться, что крупные будут работать на производстве. :)

FYI, если вы решили запустить dev-сервер с большим объемом памяти: в моем случае, используя Eclipse и Maven вместе, мне пришлось создать копию конфигурации запуска, которую Maven автоматически сгенерировал, и изменить ее, иначе Maven перезапишет мои изменения. Это также означает, что я должен периодически обновлять свою копию вручную, например, при обновлении SDK appengine (чтобы отразить номер новой версии).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню