Как исправить утечки памяти в облачных функциях Google? - PullRequest
0 голосов
/ 24 марта 2020

У меня есть облачная функция Google, которая участвует в процессе загрузки данных (CSV в Google Bucket -> Cloud SQL).

Облачная функция решала проблемы с памятью при обработке файла большего размера, и когда я начал выполнять итерацию и повторное развертывание, я начал получать следующую ошибку:

Ошибка сборки: { "error": {"canonicalCode": "INVALID_ARGUMENT", "errorMessage": "yarn_install был вывод stderr: \ nwarning package. json: нет поля лицензии \ nFATAL ERROR: MarkCompactCollector: копия полупространства, откат в старом Генерация не удалась - JavaScript куча из памяти \ n 1: 0x55ed663dfc50 узел :: Abort () [узел] \ n 2: 0x55ed663dfc9e [узел] \ n 3: 0x55ed6660e462 v8 :: Utils :: ReportOOMFailure (v8 :: internal :: Isolate *, char const *, bool) [узел] \ n 4: 0x55ed6660e7b8 v8 :: internal :: V8 :: FatalProcessOutOfMemory (v8 :: internal :: Isolate *, символьный const *, bool) [узел] \ n 5: 0x55ed66a61462 [узел] \ n 6: 0x55ed66a8e274 v8 :: internal :: EvacuateNewSpaceVisitor :: Visit (v8 :: internal :: HeapObject *, int) [узел] \ n 7: 0x55ed66a92957 void v8 :: internal :: LiveObjectVisitor: : VisitBlackObjectsNoFail (v8 :: internal :: MemoryChunk *, v8 :: internal :: MajorNonAtom icMarkingState *, v8 :: internal :: EvacuateNewSpaceVisitor *, v8 :: internal :: LiveObjectVisitor :: IterationMode) [узел] \ n 8: 0x55ed66a9acc9 v8 :: internal :: FullEvacuator :: RawEvacuatePage (v8 :: internal :: Page * , long *) [узел] \ n 9: 0x55ed66a89569 v8 :: internal :: Evacuator :: EvacuatePage (v8 :: internal :: Page *) [узел] \ n10: 0x55ed66a898a2 v8 :: internal :: PageEvacuationTask :: RunInParallel ( ) [узел] \ n11: 0x55ed66a823df v8 :: internal :: ItemParallelJob :: Task :: RunInternal () [узел] \ n12: 0x55ed66a8323d v8 :: internal :: ItemParallelJob :: Run (std :: shared_ptr) [узел] \ n13: 0x55ed66a8edc1 void v8 :: internal :: MarkCompactCollectorBase :: CreateAndExecuteEvacuationTasks (v8 :: internal :: MarkCompactCollector *, v8 :: internal :: ItemParallelJob *, v8 :: internal :: RecordMigratedSlotVisitor *, v8b :: Internal M , длинный) [узел] \ n14: 0x55ed66a99bb7 v8 :: internal :: MarkCompactCollector :: EvacuatePagesInParallel () [узел] \ n15: 0x55ed66a99d2b v8 :: internal :: MarkCompactCollector :: Evacuate () [узел] \ n16: 0x55d669 : внутренний :: MarkCompactColle ctor :: CollectGarbage () [узел] \ n17: 0x55ed66a71789 v8 :: internal :: Heap :: MarkCompact () [узел] \ n18: 0x55ed66a72023 v8 :: internal :: Heap :: PerformGarbageCollection (v8 :: internal :: GarbageCollector , v8 :: GCCallbackFlags) [узел] \ n19: 0x55ed66a72aff v8 :: internal :: Heap :: CollectGarbage (v8 :: internal :: AllocationSpace, v8 :: internal :: GarbageCollectionReason, v8 :: GCCallbackFlags) [узел] \ n20 : 0x55ed66a75315 v8 :: internal :: Heap :: AllocateRawWithRetryOrFail (int, v8 :: internal :: AllocationSpace, v8 :: internal :: AllocationAlignment) [узел] \ n21: 0x55ed66a3c164 v8 :: internal :: Factory :: NewFillerObject (int , bool, v8 :: internal :: AllocationSpace) [узел] \ n22: 0x55ed66d1059e v8 :: internal :: Runtime_AllocateInNewSpace (int, v8 :: internal :: Object **, v8 :: internal :: Isolate *) [узел] \ n23: 0x31bac4adbe1d \ n \ nerror: yarn_install возвращенный код: -6 "," errorType ":" InternalError "," errorId ":" 5A8D99A0 "}}

У меня только маленький горстка библиотек в моем пакете. json так что удивительно видеть эту проблему.

Похоже, что я столкнулся с утечкой памяти в моей размещенной функции GCP, поэтому я попытался удалить функцию и повторно развернуть (в надежде получить новый контейнер / машину) безуспешно. Я также пытался обновить библиотеки, повторно развернуть существующий код и выполнить развертывание на разных машинах безуспешно.

В настоящее время используется следующее:

  • Node10
  • Google Cloud SDK 285.0.1
  • bq 2.0.55
  • core 2020.03.17
  • gsutil 4.48

1 Ответ

1 голос
/ 24 марта 2020

Казалось, что зависимость (которая была установлена ​​довольно давно) внезапно вызывала проблемы во время процесса yarn install. У меня был установлен @ google-cloud / functions-framework@1.1.0, и после его удаления мой процесс сборки завершился нормально (я также попытался обновить его до последней версии @ 1.5.0 безрезультатно).

yarn remove @google-cloud/functions-framework позволили мне успешно выполнить повторное развертывание

...