Search: #Node

  1. 《我们将 Node.js 内存占用减少了一半》

    《我们将 Node.js 内存占用减少了一半》

    标签:#后端 #Node.js #V8 #性能优化 #内存管理 #Docker

    本文介绍了通过启用 V8 引擎的指针压缩(Pointer Compression)技术,在不修改代码的情况下将 Node.js 应用内存占用减少约 50%,且仅带来 2-4% 的平均延迟开销,同时显著降低 P99 延迟。Cloudflare 与 Igalia 合作解决了历史性的"4GB 内存笼"限制,使每个 Worker 线程拥有独立的 4GB 压缩内存空间。

    文章要点:
    - 技术原理:指针压缩将 64 位指针转为 32 位偏移量,使每个指针从 8 字节减至 4 字节,内存占用减半,代价是每次堆访问需额外的加减法运算
    - 历史障碍:此前 Node.js 未默认启用是因所有 Worker 线程共享单一 4GB 内存空间,2024 年 Cloudflare 与 Igalia 合作推出 IsolateGroups 功能,使每个 V8 实例拥有独立的 4GB 压缩内存笼
    - 实验结果:在 Next.js 电商应用基准测试中,指针压缩实现内存减半(2GB→1GB),平均延迟仅增加 2.5-4.2%,但 P99 延迟降低 7-43%,最大延迟降低 6-38%,因更小的堆减少了 GC 暂停时间
    - 业务价值:可显著降低 Kubernetes 集群成本、提升多租户 SaaS 密度、支持边缘计算部署、增加 WebSocket 并发连接数
    - 兼容性限制:每个 V8 实例仍受 4GB 堆内存限制;使用旧版 NAN 的原生插件不兼容,但 Node-API 插件不受影响
    - 使用方式:通过 platformatic/node-caged Docker 镜像一键替换官方 Node.js 镜像即可启用

    链接:https://blog.platformatic.dev/we-cut-nodejs-memory-in-half

  2. #Node #文章 node 版本管理工具可能会拖慢你的终端?

    #Node #文章 node 版本管理工具可能会拖慢你的终端?
    NVM (warm): 148-217ms per switch
    FNM (warm): 4-5ms per switch
    Volta (warm): 2-3ms per switch


    https://nodevibe.substack.com/p/the-500x-performance-gap-between The 500x performance gap between Node.js version managers (and why you might not care)

  3. #Node Node.js 通过发布 Amaro v1.0.0 迈向稳定的 TypeScript 支持,这一进展有望将 TypeScript 从“实验性”提升为“稳定”功能,为开发者带来更可靠、无需额外工具的开发体验,尽管仍面临生态兼容性和 LTS 版本支持的挑战

    #Node Node.js 通过发布 Amaro v1.0.0 迈向稳定的 TypeScript 支持,这一进展有望将 TypeScript 从“实验性”提升为“稳定”功能,为开发者带来更可靠、无需额外工具的开发体验,尽管仍面临生态兼容性和 LTS 版本支持的挑战。

    https://socket.dev/blog/node-js-moves-toward-stable-typescript-support-with-amaro-1-0 Node.js Moves Toward Stable TypeScript Support with Amaro 1.0

  4. #文章 #Node 通过案例介绍Node.js里面各种流Stream以及处理方案

    #文章 #Node 通过案例介绍Node.js里面各种流Stream以及处理方案

    https://www.sitepoint.com/node-js-streams-with-typescript/ Node.js Streams with TypeScript — SitePoint

  5. #Node TSC 决定从未来版本(25 及以上)的 Node.js 中移除 Corepack,但 Node.js 24 及更早版本仍将包含 Corepack 作为实验性功能

    #Node TSC 决定从未来版本(25 及以上)的 Node.js 中移除 Corepack,但 Node.js 24 及更早版本仍将包含 Corepack 作为实验性功能。

    https://socket.dev/blog/node-js-tsc-votes-to-stop-distributing-corepack Node.js TSC Votes to Stop Distributing Corepack