Node.js: различия между версиями

Материал из Dynatrace
Строка 23: Строка 23:
{| class="wikitable"
{| class="wikitable"
!Node.js version
!Node.js version
!Vendor released
!Выпущено вендором
!Vendor End of life
!Конец поддержки вендором
!Supported by Ключ-Астром until
!Первая поддерживаемая версия ЕдиногоАгена
!First supported Ключ-Астром ЕдиныйАгент version
!Последняя поддерживаемая версия ЕдиногоАгента
!Last supported Ключ-Астром ЕдиныйАгент version
!Поддержка Ключ-Астром до
!Уровень поддержки Ключ-Астром
|-
|18
|2022-04-19
|2025-04-30
|1.243
| -
|2026-04-30
|Поддерживается<sup>1</sup>
|-
|17
|2021-10-19
|2022-06-01
|1.235
| -
|2022-12-01
|Поддерживается
|-
|-
|16
|16
|2021/04/20
|2021-04-20
|2024/04/30
|2024-04-30
|2025/04/30
|1.219
|1.219
|
| -
|2025-04-30
|Поддерживается
|-
|-
|15
|15
|2020/10/20
|2020-10-20
|2021/06/01
|2021-06-01
|2021/12/01
|1.207
|1.207
|
|1.233
|2021-12-01
|Не поддерживается
|-
|-
|14
|14
|2020/04/21
|2020-04-21
|2023/04/30
|2023-04-30
|2024/04/30
|1.195
|1.195
|
| -
|2024-04-30
|Поддерживается
|-
|-
|13
|13
|2019/10/22
|2019-10-22
|2020/06/01
|2020-06-01
|2020/12/01
|1.183
|1.183
|1.205
|1.205
|2020-12-01
|Не поддерживается
|-
|-
|12
|12
|2019/04/23
|2019-04-23
|2022/04/30
|2022-04-30
|2023/04/30
|1.171
|1.171
|
| -
|2023-04-30
|Поддерживается
|-
|-
|11
|11
|2018/10/23
|2018-10-23
|2019/06/30
|2019-06-30
|2019/12/31
|1.159
|
|1.181
|1.181
|2019-12-31
|Не поддерживается
|-
|-
|10
|10
|2015/04/24
|2015-04-24
|2021/04/30
|2021-04-30
|2022/04/30
|1.147
|
| -
|
|2022-04-30
|Ограничено<sup>2</sup>
|-
|-
|9
|9
|2017/10/01
|2017-10-01
|2018/06/30
|2018-06-30
|2018/12/31
| -
|
|1.157
|1.157
|2018-12-31
|Не поддерживается
|-
|-
|8
|8
|2017/05/30
|2017-05-30
|2019/12/31
|2019-12-31
|2020/12/31
| -
|
|1.239
|
|2020-12-31
|-
|Не поддерживается
|7
|2015/10/25
|2016/07/30
|2017/11/30
|
|1.131
|-
|6
|2016/04/26
|2019/04/30
|2019/10/31
|
|1.179
|-
|5
|2015/10/29
|2016/06/30
|2017/10/31
|
|1.129
|-
|4
|2015/09/08
|2018/04/30
|2018/12/31
|
|1.157
|-
|0.12
|2015/02/06
|2016/12/31
|2017/10/31
|
|1.129
|-
|0.10
|2013/03/01
|
|2017/10/31
|
|1.129
|}
|}
<sup>1</sup> Новые функции Node.js 18, помеченные как «экспериментальные», не поддерживаются.
<sup>2</sup> Ограниченная поддержка: Ключ-Астром может решать только те проблемы, которые можно воспроизвести в поддерживаемых версиях.


== Известные ограничения            ==
== Известные ограничения            ==


*Из-за ограничений платформы JavaScript и Node.js видимость на уровне кода ограничена по сравнению с .NET или Java.
*Из-за ограничений платформы JavaScript и Node.js видимость на уровне кода ограничена по сравнению с .NET или Java.
* В сочетании с неподдерживаемыми сторонними модулями контекст может быть потерян в асинхронных обратных вызовах. В таких случаях свяжитесь со специалистом по продукту Ключ-Астром ONE, нажав кнопку чата в правом верхнем углу строки меню Ключ-Астром.
*В сочетании с неподдерживаемыми сторонними модулями контекст может быть потерян в асинхронных обратных вызовах. В таких случаях свяжитесь со специалистом по продуктам Ключ-Астром ONE, нажав кнопку чата в правом верхнем углу строки меню Ключ-Астром.
*Использование модуля NPM esm в варианте 1 для пакетов может привести к снижению видимости (особенно, если он используется для основного сценария приложения). Предпочтительно использовать вариант 2 для предварительной загрузки esm с помощью параметра командной строки -r.
*Использование модуля esm NPM в варианте 1 для пакетов может привести к снижению видимости (особенно если используется для основного сценария приложения). Предпочтительно использовать вариант 2 для предварительной загрузки esm с помощью параметра командной строки -r.
*В настоящее время существует только ограниченная поддержка модулей ECMAScript (также известных как «модули ES6»):
*В настоящее время существует только ограниченная поддержка модулей ECMAScript (также известных как «модули ES6»):
**Если сам основной файл сценария является модулем ECMAScript, ЕдиныйАгент версии 1.219+ с включенной предварительной загрузкой агента необходим для внедрения ЕдиныйАгент в процесс Node.js.
**Если сам основной файл сценария представляет собой модуль ECMAScript, для внедрения ЕдиногоАгента в процесс Node.js требуется ЕдиныйАгент версии 1.219+ с включенной предварительной загрузкой агента.
** Инструментарий модулей ECMAScript в настоящее время недоступен. Это ограничивает поддержку kafkajs в случае, если пользовательская точка входа для датчика KafkaJs находится внутри модуля ECMAScript.
**Инструментарий модулей ECMAScript в настоящее время недоступен. Это ограничивает поддержку kafkajs, если определяемая пользователем точка входа для сенсора KafkaJs находится внутри модуля ECMAScript.
* По умолчанию '''Webpack''' объединяет все модули в один файл. ЕдиныйАгент не может инструментировать связанные модули. Чтобы обойти это ограничение, все модули, которые необходимо инструментировать с помощью ЕдиныйАгент (например, express, mongodb, pg,…), должны быть экстернализованы в конфигурации webpack. Подробности см. В документации Webpack Externals.
*'''Webpack''' по умолчанию объединяет все модули в один файл. ЕдиныйАгент не может инструментировать связанные модули. Чтобы обойти это ограничение, все модули, которые должны быть инструментированы ЕдинымАгентом (такие как express, mongodb и pg), должны быть внешними в конфигурации веб-пакета. Подробнее см. в документации по внешним компонентам webpack.
* Ограничения внешней выборки для определенных версий ЕдиныйАгент: Google V8 подвержен ряду проблем с памятью и нагрузкой на ЦП, что препятствует фоновому профилированию ЦП на производственном уровне:
** утечка памяти
**чрезмерное пиковое потребление памяти
**чрезмерная нагрузка на ЦП в системах Windows Таким образом, профилирование ЦП (окружающая выборка) не включено по умолчанию для всех версий ЕдиныйАгент:
** Внешняя выборка включена по умолчанию в ЕдиныйАгент версии 1.181. В ЕдиныйАгент версии 1.181 вышеупомянутые ограничения были устранены за счет отказа от использования v8 CpuProfiler для внешней выборки. Ambient Sampling полностью доступен на всех поддерживаемых платформах и во всех поддерживаемых версиях Node.js без каких-либо ограничений.
**Внешняя выборка отключена по умолчанию для ЕдиныйАгент версий от 1.157 до 1.179. В Linux внешняя выборка может быть включена для следующих версий Node.js:
*** Node.js version 6
*** Node.js versions ^8.9.4 (8.9.4 <= node.js < 9.0.0)
*** Node.js версии 9.3.0 или более поздней. В Windows выборка окружающей среды отключена для этих версий ЕдиныйАгент, так как это приведет к 100% загрузке ЦП для одного ЦП. ЕдиныйАгент записывает в журнал записи для каждой обнаруженной неподдерживаемой версии: <code>AmbientSampling: <unsupported platform> / <node version></code>
 
== Дальнейшее чтение            ==
 
*Как отслеживать приложения Cloud Foundry?
* Блог: Общие сведения о сборке мусора и поиск утечек памяти в Node.js
*Блог: как отслеживать проблемы с процессором в Node.js
*Блог: все, что вам нужно знать, чтобы по-настоящему понять цикл событий Node.js и его показатели.

Версия 17:12, 24 ноября 2022

Node.js - это серверный фреймворк, основанный на движке JavaScript V8 от Google. Node.js имеет асинхронную модель выполнения и часто используется для склейки или в качестве уровня прокси в корпоративных средах.

Возможности

Ключ-Астром предоставляет обширные возможности мониторинга Node.js:

  • Куча и метрики процесса
  • Heap dumps
  • Выборка процессора (см. Известные ограничения)
  • Показатели цикла событий
  • Анализ входящих и исходящих HTTP-вызовов
  • Выделенная поддержка для множества баз данных (включая захват запросов)
  • Захват следов OpenTelemetry
  • ЕдиныйАгент SDK для пользовательской трассировки

См. Нашу матрицу поддерживаемых технологий для получения подробной информации о поддерживаемых технологиях, которые будут использоваться вместе с Node.js.

Поддержка и отказ от поддержки

Node.js следует модели выпуска LTS.

Каждая версия с нечетным номером достигает EOL вскоре после выпуска каждой новой версии с четным номером. Каждая четная версия в конечном итоге становится LTS-выпуском. Для корпоративных производственных сред мы рекомендуем придерживаться выпусков LTS.

Каждый раз, когда выпускается новая основная версия Node.js (четная или нечетная), мы добавляем поддержку этой версии.

Ключ-Астром будет следовать этой модели поддержки, но будет поддерживать каждую версию Node.js как минимум на полгода дольше, чтобы у наших клиентов было время для обновлений.

Node.js version Выпущено вендором Конец поддержки вендором Первая поддерживаемая версия ЕдиногоАгена Последняя поддерживаемая версия ЕдиногоАгента Поддержка Ключ-Астром до Уровень поддержки Ключ-Астром
18 2022-04-19 2025-04-30 1.243 - 2026-04-30 Поддерживается1
17 2021-10-19 2022-06-01 1.235 - 2022-12-01 Поддерживается
16 2021-04-20 2024-04-30 1.219 - 2025-04-30 Поддерживается
15 2020-10-20 2021-06-01 1.207 1.233 2021-12-01 Не поддерживается
14 2020-04-21 2023-04-30 1.195 - 2024-04-30 Поддерживается
13 2019-10-22 2020-06-01 1.183 1.205 2020-12-01 Не поддерживается
12 2019-04-23 2022-04-30 1.171 - 2023-04-30 Поддерживается
11 2018-10-23 2019-06-30 1.159 1.181 2019-12-31 Не поддерживается
10 2015-04-24 2021-04-30 1.147 - 2022-04-30 Ограничено2
9 2017-10-01 2018-06-30 - 1.157 2018-12-31 Не поддерживается
8 2017-05-30 2019-12-31 - 1.239 2020-12-31 Не поддерживается

1 Новые функции Node.js 18, помеченные как «экспериментальные», не поддерживаются.

2 Ограниченная поддержка: Ключ-Астром может решать только те проблемы, которые можно воспроизвести в поддерживаемых версиях.

Известные ограничения

  • Из-за ограничений платформы JavaScript и Node.js видимость на уровне кода ограничена по сравнению с .NET или Java.
  • В сочетании с неподдерживаемыми сторонними модулями контекст может быть потерян в асинхронных обратных вызовах. В таких случаях свяжитесь со специалистом по продуктам Ключ-Астром ONE, нажав кнопку чата в правом верхнем углу строки меню Ключ-Астром.
  • Использование модуля esm NPM в варианте 1 для пакетов может привести к снижению видимости (особенно если используется для основного сценария приложения). Предпочтительно использовать вариант 2 для предварительной загрузки esm с помощью параметра командной строки -r.
  • В настоящее время существует только ограниченная поддержка модулей ECMAScript (также известных как «модули ES6»):
    • Если сам основной файл сценария представляет собой модуль ECMAScript, для внедрения ЕдиногоАгента в процесс Node.js требуется ЕдиныйАгент версии 1.219+ с включенной предварительной загрузкой агента.
    • Инструментарий модулей ECMAScript в настоящее время недоступен. Это ограничивает поддержку kafkajs, если определяемая пользователем точка входа для сенсора KafkaJs находится внутри модуля ECMAScript.
  • Webpack по умолчанию объединяет все модули в один файл. ЕдиныйАгент не может инструментировать связанные модули. Чтобы обойти это ограничение, все модули, которые должны быть инструментированы ЕдинымАгентом (такие как express, mongodb и pg), должны быть внешними в конфигурации веб-пакета. Подробнее см. в документации по внешним компонентам webpack.