-
我在 JavaScript 里用 setTimeout 0 想让一段逻辑稍后立即执行来排个时序,结果它总是排在所有 Promise 回调的后面执行,输出顺序跟我写的顺序完全对不上,因为微任务永远先于宏任务的深度复盘
我有段逻辑想让它在当前同步代码跑完后尽快执行,用了 setTimeout(fn, 0),以为 0 毫秒就是马上、最先执行。可代码里同时还有 Promise.then 回调,运行结果让我懵了:setTimeout(0) 总是排在所有 Promise.then 回调的后面执行,日志顺序和书写顺序完全对不上,靠它排的时序也错乱。复盘才搞懂:JS 单线程靠事件循环调度异步,异步分宏任务(setTimeou…- 0
- 0
-
Node.js Worker Threads 把 P99 12 秒降到 620ms 但又踩出主线程死锁的 4 天复盘:pool + transferable + 超时保护三件套
doc-converter 服务大文档转换 P99 12 秒,改 worker_threads 后第一版 OOM 第二版主线程死锁。3 版迭代后 pool + transferable + 队列超时三件套定稿,P99 降到 620ms 内存稳定。SharedArrayBuffer Atomics 何时用、cluster vs worker_threads 选型、pool size 调优全过程。- 0
- 0
-
Node.js Event Loop 阻塞导致 23 分钟雪崩的完整复盘:从 1.4 秒同步 JSON.parse 到 8 条工程纪律
一段看似无害的 JSON.parse 同步代码,在收到 12MB 恶意请求后阻塞 event loop 1.4 秒,刚好命中 K8s 健康检查超时,触发 20 个副本连锁雪崩 23 分钟、影响 18 万用户、损失 40 万。这篇完整复盘事故现场、event loop 工作原理、perf_hooks 监控、stream-json/Worker Threads/shedding/clinic.js 五…- 9
- 0
-
asyncio event loop 被同步代码卡死的真实事故:P99 从 80ms 飙到 12s 的 6 小时复盘
一个隐藏在 async 函数里的 requests.get() 调用,把订单查询服务的 P99 从 80ms 推到 12 秒。本文用 1 万字+ 的篇幅完整复盘 6 小时排查过程:py-spy 抓栈、事故时间线、5 种修法横向对比、Prometheus loop lag 监控、Kubernetes 探针、AST 静态扫描规则,以及事故后我们对 47 个 Python 服务做的全面体检。- 0
- 0
-
Node.js event loop 阻塞排查实录:p99 从 8s 降到 250ms
Node.js BFF p99 飙到 8 秒但 CPU 仅 30%,event loop max delay 2.4 秒。本文实录 5 大阻塞场景:JSON.parse 大对象 / 同步 crypto / 正则灾难 / fs.*Sync / 大数组操作。配合 perf_hooks / clinic.js / 0x / worker_threads 完整工具链。- 4
- 0
-
彻底搞懂 JavaScript 事件循环(Event Loop):宏任务、微任务与执行顺序详解
"JavaScript 是单线程的,那它为什么不会被一个耗时操作卡死?" "setTimeout(fn, 0) 为什么不是立刻执行?" "为什么 Promise 总比 setTimeout 先输出?" "为什么我明明先 setState 了,读到的还是旧值?" —— 这些问题的答案,全都指向同一个机制:事件循环(Eve…- 2
- 0
Event Loop
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!






