Node 20 中用 date-fns 做时区转换,我漏掉夏令时那一小时
上个月做定时任务,需要把用户本地时间转换成 UTC 存库。线上用的是 Node 20.11,容器时区统一设成 UTC,数据量不大,一天几十万条记录。上线第二天发现,凌晨那批任务的执行时间比预期晚了一个小时,用户投诉说提醒迟到了。
喜欢把复杂的事说简单,不喜欢把简单的事说复杂。
上个月做定时任务,需要把用户本地时间转换成 UTC 存库。线上用的是 Node 20.11,容器时区统一设成 UTC,数据量不大,一天几十万条记录。上线第二天发现,凌晨那批任务的执行时间比预期晚了一个小时,用户投诉说提醒迟到了。
项目是 Rust 1.79、Linux x86_64、workspace 下 14 个 crate,编译一次 release 大概 6 分钟。某次改 Cargo.toml 时发现某个 crate 的 dev-dependencies 里躺着 criterion,但那个 crate 根本没有 bench 目录,测试文件里也没出现 Criterion。手写 grep 太容易漏,尤其宏和重导出之后,名字
项目里要批量改几十个 JSON 文件的字段,写脚本太啰嗦,我直接用了 `npx json -I -f a.json -e 'this.x=1'`。本机 Node 18.17,macOS 13,npm 9.6,第一次跑就报 `EACCES: permission denied, open '/Users/xxx/.npm/_npx/.../node_modules/.bin/json'`。文件数量不
前阵子在一个 1.78 的 workspace 里遇到个怪事:某个小 crate 单独编译没问题,放进 workspace 就报 trait 方法不存在,错误指向的是 `serde::de::Deserialize`,但代码里根本没直接写这个路径。整个 workspace 大约 40 个成员,依赖树深到 cargo build 输出里滚了快两屏。
项目是 Rust 1.76,Linux x86_64,workspace 里 14 个 crate,`cargo build` 冷编译要 3 分 40 秒。症状是改一行业务代码,重新编译也要 40 多秒,而改动本身只碰一个叶子 crate。
我在一个订单自动取消的服务里用 setTimeout 做延迟队列,Node 16 环境,单机峰值 30 万延迟任务。现象是运行两天后 RSS 从 300MB 涨到 1.2GB,heap snapshot 里全是 Timeout 对象和闭包。
环境是 Rust 1.79,Linux x86_64,项目里有一批 tokio 异步测试,`cargo test` 单线程跑一次大约 3 分钟。为了加快反馈,我换成了 cargo-nextest(0.9.70),默认多进程并行,本地跑下来 40 秒左右。问题出在接入 CI 后:原来全绿的用例,在 nextest 里偶发失败,报错都是 `test timed out after 60s`,但同样的用
线上有个离线任务,每天要读一批第三方导出的 JSON 文件,单个 60 到 200MB,Node 版本是 18.17,跑在 4C8G 的容器里。现象是任务刚起来 RSS 就冲到 1.2G 左右,两三个文件轮着处理时偶尔直接被 OOM kill,日志里连异常都没有。