0

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

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

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

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

+0

Произошла ли эта ошибка на сервере разработки или в производстве? –

+0

Привет @ Эрик Симонтон, вы правы! Проблема возникает только с сервером разработки, а не с производством. – SetV

ответ

1

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

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

Смежные вопросы