Node.js: различия между версиями
IKolomin (обсуждение | вклад) |
IKolomin (обсуждение | вклад) |
||
Строка 2: | Строка 2: | ||
== Возможности == | == Возможности == | ||
Ключ-Астром предоставляет обширные возможности мониторинга Node.js: | |||
* Куча и метрики процесса | * Куча и метрики процесса | ||
* Heap dumps | * Heap dumps | ||
Строка 10: | Строка 10: | ||
*Выделенная поддержка для множества баз данных (включая захват запросов) | *Выделенная поддержка для множества баз данных (включая захват запросов) | ||
*Захват следов OpenTelemetry | *Захват следов OpenTelemetry | ||
* | *ЕдиныйАгент SDK для пользовательской трассировки | ||
См. Нашу матрицу поддерживаемых технологий для получения подробной информации о поддерживаемых технологиях, которые будут использоваться вместе с Node.js. | См. Нашу матрицу поддерживаемых технологий для получения подробной информации о поддерживаемых технологиях, которые будут использоваться вместе с Node.js. | ||
Строка 20: | Строка 20: | ||
Каждый раз, когда выпускается новая основная версия Node.js (четная или нечетная), мы добавляем поддержку этой версии. | Каждый раз, когда выпускается новая основная версия Node.js (четная или нечетная), мы добавляем поддержку этой версии. | ||
Ключ-Астром будет следовать этой модели поддержки, но будет поддерживать каждую версию Node.js как минимум на полгода дольше, чтобы у наших клиентов было время для обновлений. | |||
{| class="wikitable" | {| class="wikitable" | ||
!Node.js version | !Node.js version | ||
!Vendor released | !Vendor released | ||
!Vendor End of life | !Vendor End of life | ||
!Supported by | !Supported by Ключ-Астром until | ||
!First supported | !First supported Ключ-Астром ЕдиныйАгент version | ||
!Last supported | !Last supported Ключ-Астром ЕдиныйАгент version | ||
|- | |- | ||
|16 | |16 | ||
Строка 138: | Строка 138: | ||
*Из-за ограничений платформы JavaScript и Node.js видимость на уровне кода ограничена по сравнению с .NET или Java. | *Из-за ограничений платформы JavaScript и Node.js видимость на уровне кода ограничена по сравнению с .NET или Java. | ||
* В сочетании с неподдерживаемыми сторонними модулями контекст может быть потерян в асинхронных обратных вызовах. В таких случаях свяжитесь со специалистом по продукту | * В сочетании с неподдерживаемыми сторонними модулями контекст может быть потерян в асинхронных обратных вызовах. В таких случаях свяжитесь со специалистом по продукту Ключ-Астром ONE, нажав кнопку чата в правом верхнем углу строки меню Ключ-Астром. | ||
*Использование модуля NPM esm в варианте 1 для пакетов может привести к снижению видимости (особенно, если он используется для основного сценария приложения). Предпочтительно использовать вариант 2 для предварительной загрузки esm с помощью параметра командной строки -r. | *Использование модуля NPM esm в варианте 1 для пакетов может привести к снижению видимости (особенно, если он используется для основного сценария приложения). Предпочтительно использовать вариант 2 для предварительной загрузки esm с помощью параметра командной строки -r. | ||
*В настоящее время существует только ограниченная поддержка модулей ECMAScript (также известных как «модули ES6»): | *В настоящее время существует только ограниченная поддержка модулей ECMAScript (также известных как «модули ES6»): | ||
**Если сам основной файл сценария является модулем ECMAScript, | **Если сам основной файл сценария является модулем ECMAScript, ЕдиныйАгент версии 1.219+ с включенной предварительной загрузкой агента необходим для внедрения ЕдиныйАгент в процесс Node.js. | ||
** Инструментарий модулей ECMAScript в настоящее время недоступен. Это ограничивает поддержку kafkajs в случае, если пользовательская точка входа для датчика KafkaJs находится внутри модуля ECMAScript. | ** Инструментарий модулей ECMAScript в настоящее время недоступен. Это ограничивает поддержку kafkajs в случае, если пользовательская точка входа для датчика KafkaJs находится внутри модуля ECMAScript. | ||
* По умолчанию '''Webpack''' объединяет все модули в один файл. | * По умолчанию '''Webpack''' объединяет все модули в один файл. ЕдиныйАгент не может инструментировать связанные модули. Чтобы обойти это ограничение, все модули, которые необходимо инструментировать с помощью ЕдиныйАгент (например, express, mongodb, pg,…), должны быть экстернализованы в конфигурации webpack. Подробности см. В документации Webpack Externals. | ||
* Ограничения внешней выборки для определенных версий | * Ограничения внешней выборки для определенных версий ЕдиныйАгент: Google V8 подвержен ряду проблем с памятью и нагрузкой на ЦП, что препятствует фоновому профилированию ЦП на производственном уровне: | ||
** утечка памяти | ** утечка памяти | ||
**чрезмерное пиковое потребление памяти | **чрезмерное пиковое потребление памяти | ||
**чрезмерная нагрузка на ЦП в системах Windows Таким образом, профилирование ЦП (окружающая выборка) не включено по умолчанию для всех версий | **чрезмерная нагрузка на ЦП в системах Windows Таким образом, профилирование ЦП (окружающая выборка) не включено по умолчанию для всех версий ЕдиныйАгент: | ||
** Внешняя выборка включена по умолчанию в | ** Внешняя выборка включена по умолчанию в ЕдиныйАгент версии 1.181. В ЕдиныйАгент версии 1.181 вышеупомянутые ограничения были устранены за счет отказа от использования v8 CpuProfiler для внешней выборки. Ambient Sampling полностью доступен на всех поддерживаемых платформах и во всех поддерживаемых версиях Node.js без каких-либо ограничений. | ||
**Внешняя выборка отключена по умолчанию для | **Внешняя выборка отключена по умолчанию для ЕдиныйАгент версий от 1.157 до 1.179. В Linux внешняя выборка может быть включена для следующих версий Node.js: | ||
*** Node.js version 6 | *** Node.js version 6 | ||
*** Node.js versions ^8.9.4 (8.9.4 <= node.js < 9.0.0) | *** Node.js versions ^8.9.4 (8.9.4 <= node.js < 9.0.0) | ||
*** Node.js | *** Node.js версии 9.3.0 или более поздней. В Windows выборка окружающей среды отключена для этих версий ЕдиныйАгент, так как это приведет к 100% загрузке ЦП для одного ЦП. ЕдиныйАгент записывает в журнал записи для каждой обнаруженной неподдерживаемой версии: <code>AmbientSampling: <unsupported platform> / <node version></code> | ||
== | == Дальнейшее чтение == | ||
* | *Как отслеживать приложения Cloud Foundry? | ||
* | * Блог: Общие сведения о сборке мусора и поиск утечек памяти в Node.js | ||
* | *Блог: как отслеживать проблемы с процессором в Node.js | ||
* | *Блог: все, что вам нужно знать, чтобы по-настоящему понять цикл событий Node.js и его показатели. |
Версия 08:25, 1 декабря 2021
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 | Vendor released | Vendor End of life | Supported by Ключ-Астром until | First supported Ключ-Астром ЕдиныйАгент version | Last supported Ключ-Астром ЕдиныйАгент version |
---|---|---|---|---|---|
16 | 2021/04/20 | 2024/04/30 | 2025/04/30 | 1.219 | |
15 | 2020/10/20 | 2021/06/01 | 2021/12/01 | 1.207 | |
14 | 2020/04/21 | 2023/04/30 | 2024/04/30 | 1.195 | |
13 | 2019/10/22 | 2020/06/01 | 2020/12/01 | 1.183 | 1.205 |
12 | 2019/04/23 | 2022/04/30 | 2023/04/30 | 1.171 | |
11 | 2018/10/23 | 2019/06/30 | 2019/12/31 | 1.181 | |
10 | 2015/04/24 | 2021/04/30 | 2022/04/30 | ||
9 | 2017/10/01 | 2018/06/30 | 2018/12/31 | 1.157 | |
8 | 2017/05/30 | 2019/12/31 | 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 |
Известные ограничения
- Из-за ограничений платформы JavaScript и Node.js видимость на уровне кода ограничена по сравнению с .NET или Java.
- В сочетании с неподдерживаемыми сторонними модулями контекст может быть потерян в асинхронных обратных вызовах. В таких случаях свяжитесь со специалистом по продукту Ключ-Астром ONE, нажав кнопку чата в правом верхнем углу строки меню Ключ-Астром.
- Использование модуля NPM esm в варианте 1 для пакетов может привести к снижению видимости (особенно, если он используется для основного сценария приложения). Предпочтительно использовать вариант 2 для предварительной загрузки esm с помощью параметра командной строки -r.
- В настоящее время существует только ограниченная поддержка модулей ECMAScript (также известных как «модули ES6»):
- Если сам основной файл сценария является модулем ECMAScript, ЕдиныйАгент версии 1.219+ с включенной предварительной загрузкой агента необходим для внедрения ЕдиныйАгент в процесс Node.js.
- Инструментарий модулей ECMAScript в настоящее время недоступен. Это ограничивает поддержку kafkajs в случае, если пользовательская точка входа для датчика KafkaJs находится внутри модуля ECMAScript.
- По умолчанию Webpack объединяет все модули в один файл. ЕдиныйАгент не может инструментировать связанные модули. Чтобы обойти это ограничение, все модули, которые необходимо инструментировать с помощью ЕдиныйАгент (например, express, mongodb, pg,…), должны быть экстернализованы в конфигурации webpack. Подробности см. В документации Webpack Externals.
- Ограничения внешней выборки для определенных версий ЕдиныйАгент: 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% загрузке ЦП для одного ЦП. ЕдиныйАгент записывает в журнал записи для каждой обнаруженной неподдерживаемой версии:
AmbientSampling: <unsupported platform> / <node version>
Дальнейшее чтение
- Как отслеживать приложения Cloud Foundry?
- Блог: Общие сведения о сборке мусора и поиск утечек памяти в Node.js
- Блог: как отслеживать проблемы с процессором в Node.js
- Блог: все, что вам нужно знать, чтобы по-настоящему понять цикл событий Node.js и его показатели.