背景
这里的 Verdaccio 是指用于搭建轻量级 npm 私有仓库的开源解决方案,以下简称 npm 私服。
近期观察发现,有些项目依赖了名为 npm
的 npm 包,每次项目部署时都会向私服 /npm
发起请求记录,并在监控曲线上呈明显的高耗时,这引起了我们的关注。
有些项目依赖了 npm 自身的包,每次项目部署时都会产生对私服 /npm
路由的请求记录,并在监控曲线上呈明显的高耗时,这引起了我们的关注。
这里的 Verdaccio 是指用于搭建轻量级 npm 私有仓库的开源解决方案,以下简称 npm 私服。
近期观察发现,有些项目依赖了名为 npm
的 npm 包,每次项目部署时都会向私服 /npm
发起请求记录,并在监控曲线上呈明显的高耗时,这引起了我们的关注。
有些项目依赖了 npm 自身的包,每次项目部署时都会产生对私服 /npm
路由的请求记录,并在监控曲线上呈明显的高耗时,这引起了我们的关注。
这是一篇面向 Egg.js 上层框架开发者的科普文。
Egg 官网基本做到了呈现所有“必知必会”的内容,再写一份 Egg 使用教程已经毫无必要,不如聊聊 Egg 上层框架开发过程中可能有用的技巧。
本来是几个月前在 Ubuntu 部署 Elastic apm-server 遇到的问题,当时处理起来没遇到特别的卡点,就只是把解决过程丢到 Evernote 了。最近发现还有人在重复踩这个坑,因此我把笔记整理之后搬到这里作一个极简的分享。
使用 7.1.2 才过了不到 3 个月,我又将博客主题升级了,不过这次是因为 sidebar 出现了统计隐藏的样式 bug,没想到意外赶上了几个特别明显的优化。这次是真的值得所有 NexT 老用户去尝试了。
《 The Pragmatic Programmer: From Journeyman to Master 》这本书已加入愿望单许久,最近终于在通勤路上读完了。对于处于或将处于熟练工阶段的程序员,毫无疑问这是本值得用心阅读的书,因此我也写一下短评和推荐理由。
想必大家已经知道,EasyConnect 会在后台强行添加名为 EasyMonitor 的开机自启守护进程,网上已经有关闭教程了
1 | sudo launchctl unload /Library/LaunchDaemons/com.sangfor.EasyMonitor.plist |
可实际上 EasyConnect 还启动了另一个“杀不掉”的后台进程 ECAgent,活动频率很低,似乎不会造成内存泄漏,略显不起眼。但这无法作为它肆意常驻的理由。
Smooth Weighted Round-Robin (SWRR) 是 nginx 默认的加权负载均衡算法,它的重要特点是平滑,避免低权重的节点长时间处于空闲状态,因此被称为平滑加权轮询。
该算法来自 nginx 的一次 commit:Upstream: smooth weighted round-robin balancing
在阅读之前,你应该已经了解过 nginx 的几种负载均衡算法,并阅读了 SWRR 的实现。
介绍此算法的文章有很多,但用数学角度给出证明过程的较少,尽管并不复杂。这里把自己的思路分享一下,为了便于理解,只考虑算法核心的 current_weight,忽略受异常波动影响的 effective_weight。
先把干货放前面,辅助排查的 npm 模块有:wtfnode,why-is-node-running,active-handles 等,使用方法差不多如下,可以查看各自的文档。
1 | const wtf = require('wtfnode'); |
也可以更深入地排查,因为上述模块的核心都是 Node.js 文档未标注的两个接口:
1 | process._getActiveHandles(); |
好了,本篇到这里结束了,剩下的内容,劝你还是跳过吧:流水帐警告⚠️️ 翻车警告⚠️️
从 2019 年 7 月份开始,Travis CI 默认开启 npm 缓存。这意味着 node_module 和 package-lock.json 会在初次构建时缓存,倘若后续更新 npm 依赖而不刷新该缓存,可能带来构建失败的问题。