Должен ли я думать о / учитывать / управлять потреблением памяти на сервере Node при разработке веб-интерфейса в React? - PullRequest
1 голос
/ 23 сентября 2019

Я создаю веб-приложение SPA - сервисы API Yii2, которые используются приложением React SPA.React-приложение обслуживается сервером узлов с помощью команды npm start.

Вопрос в том, стоит ли мне думать об управлении памятью в коде JavaScript и о том, как оно влияет на потребление памяти сервером Noder.

Некоторые первоначальные эксперименты показывают, что мой Node-сервер (на рабочей станции Windows 10) потребляет 200 МБ initilly, после первых 15 запросов страниц потребление увеличивается (как видно в диспетчере задач) до 300 МБ, а затем каждый новый запрос страницы увеличивает объем памяти примерно на 1 МБ., но через некоторое время память восстанавливается, а потребление уменьшается и стабилизируется около 300 МБ.

Это нормальное поведение?

Я предположил, что мне следует думать только о том, что происходит в клиентском браузере, узлеЯ должен забыть обо всем с того момента, когда страница будет передана клиенту.

У меня есть этот вопрос, потому что мой Node-сервер вышел из строя во время разработки, и я боюсь, что это может произойти и в производстве:

<--- Last few GCs --->

[14416:00000248F3E072F0] 25742472 ms: Mark-sweep 1394.1 (1448.4) -> 1394.0 (1448.4) MB, 112.2 / 0.0 ms  allocation failure GC in old space requested
[14416:00000248F3E072F0] 25742582 ms: Mark-sweep 1394.0 (1448.4) -> 1391.3 (1413.4) MB, 110.4 / 0.0 ms  last resort GC in old space requested
[14416:00000248F3E072F0] 25742692 ms: Mark-sweep 1391.3 (1413.4) -> 1391.3 (1412.4) MB, 110.4 / 0.0 ms  last resort GC in old space requested


<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 00000156F9D25529 <JSObject>
    2: replace(this=00000188823C00B9 <Very long string[570801]>,000001E83CD62109 <String[32]: var HTML_WEBPACK_PLUGIN_RESULT =>,000003385EA02431 <String[0]: >)
    3: /* anonymous */ [C:\xampp3\htdocs\...\node_modules\html-webpack-plugin\index.js:224] [bytecode=000001E83CD60D69 offset=39](this=000001D78CCEC789 <HtmlWebpackPlugin map = 000000AF60CBA179>,compilation=0000009A874EC2D1 <Tapabl...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
 1: node::DecodeWrite
 2: node_module_register
 3: v8::internal::FatalProcessOutOfMemory
 4: v8::internal::FatalProcessOutOfMemory
 5: v8::internal::Factory::NewRawTwoByteString
 6: v8::internal::Smi::SmiPrint
 7: v8::internal::StackGuard::HandleInterrupts
 8: v8::internal::SlicedString::SlicedStringGet
 9: v8::internal::AsmJsScanner::IsNumberStart
10: 0000036A84D043C1
...