提升node 并发30倍

本文摘译自How we 30x’d our Node parallelism

  • 做的是银行业务
  • 原来是4,000 个node container节点(这里应该是指机器而不是nodejs worker),每个处理一个请求gRpc,因此最大并发4000
  • 通过此改善每季度节约30万美元
  • 改善的前提是收集详细的metric监控调试信息
  • 前面用负载均衡
  • 现在是每个节点增加并发(nio)
  • 因此需要加大nodejs内存--max-old-space-size=6144
  • 使用no-floating-promises验证
  • 问题一:AWS S3 client reduces maxSockets from Infinity to 50
  • 问题二:JSON序列化,不要使用bfj包,改用JSONStream。
  • 问题三:GC,使用gc-stats监控,使用--max-semi-space-size=1024减少GC频率。
  • 问题四:CPU,使用FlameGraph分析。发现日志占用15%,解决办法此文没有详述(正则表达式等)。
  • 最终每个节点可以并发处理30个请求 。

Continue reading 提升node 并发30倍

package-lock.json 与 npm-shrinkwrap的区别

区别

  • package-lock.json 不会发布到npm
  • npm-shrinkwrap.json会发布到npm
  • package-lock.json只对顶层依赖有效
  • npm-shrinkwrap.json会对所有层级子依赖有效
  • 因此npm-shrinkwrap.json会严格按照指定的版本下载依赖,导致同一个库由于多个不同的包传递依赖不同的版本,而形成多个版本同时存在的情况(当然这个不会有问题)
  • package-lock.json则只需要兼容即可,同一个库大部分只有一个版本。

Continue reading package-lock.json 与 npm-shrinkwrap的区别

Pagination


Total views.

© 2013 - 2020. All rights reserved.

Powered by Hydejack v6.6.1