Nagle算法与Delayed ACK:为什么你的TCP请求莫名其妙多了40毫秒
2015年,Julia Evans在工作中遇到了一个诡异的问题:向本地NSQ消息队列发布消息,每次请求都莫名其妙地多出40毫秒延迟。这是一个本地回环请求,理论上应该在1毫秒内完成。CPU负载正常,内存充足,没有任何明显的性能瓶颈。 ...
2015年,Julia Evans在工作中遇到了一个诡异的问题:向本地NSQ消息队列发布消息,每次请求都莫名其妙地多出40毫秒延迟。这是一个本地回环请求,理论上应该在1毫秒内完成。CPU负载正常,内存充足,没有任何明显的性能瓶颈。 ...
2015年8月,Google开发者倡导者Jake Archibald发布了一篇题为《Tasks, microtasks, queues and schedules》的文章,用一个简单的代码示例揭示了JavaScript开发者普遍存在的认知盲区: ...
2017年6月,Figma工程团队在官方博客发布了一组测试数据:将C++渲染引擎从asm.js迁移到WebAssembly后,大型设计文档的加载时间缩短了3倍。这是WebAssembly早期最有力的一次「实力展示」,也让很多人相信这项技术将彻底改变Web开发的格局。 ...
一个看似简单的面试题:在64位系统上,下面的结构体占多少字节? struct Example { char a; // 1字节 int b; // 4字节 char c; // 1字节 double d; // 8字节 }; 把所有成员的大小加起来:1 + 4 + 1 + 8 = 14字节。但实际答案是24字节——比预期多了71%。 ...
title: “内存泄漏:为什么即使有垃圾回收,你的程序仍在悄悄泄漏内存” date: “2026-03-05T16:36:29+08:00” description: “从2012年AWS宕机事件到Chrome DevTools堆快照分析,深入剖析内存泄漏的本质——不是技术缺陷,而是资源管理的系统性失误。本文涵盖手动内存管理语言(C/C++)与垃圾回收语言(Java、Go、JavaScript)的不同泄漏模式,对比Valgrind与AddressSanitizer的检测策略,揭示RAII、智能指针、弱引用等防御机制的设计哲学。” draft: false categories: [“系统架构”, “编程语言”, “技术原理”] tags: [“内存泄漏”, “垃圾回收”, “内存管理”, “RAII”, “Valgrind”, “AddressSanitizer”, “智能指针”, “性能优化”] 2012年10月22日,Amazon Web Services遭遇了一次看似普通的故障。一台数据收集服务器被更换后,DNS地址没有正确传播,导致部分服务器持续尝试连接这台已下线的机器。这个持续的重试行为触发了内存泄漏。更致命的是,负责监控内存的内部警报系统同时失效——所有仪表盘显示绿色,而系统正在走向崩溃。 ...
1995年,一名程序员在测试文件服务器时发现了一个令人困惑的现象:服务器CPU利用率高达80%,但实际的数据传输速度却远低于硬件理论带宽。追踪后发现,超过60%的CPU时间花在了同一个操作上——memcpy()。 ...
2017年,某高频交易公司的Java系统在关键交易时段出现了一次3.2秒的停顿。这不是网络故障,也不是数据库锁死——仅仅是垃圾回收器在清理一个16GB的堆。在金融交易的世界里,3.2秒意味着数百万美元的损失。 ...