Go HTTP Client 大量 TIME_WAIT:连接复用与 Transport 调优实录
记录 Go HTTP Client 出现大量 TIME_WAIT 和短连接的一次排查,沿请求代码、响应体处理与连接生命周期分析复用问题,再讨论 Transport 配置和调优时需要考虑的负载条件。
CATEGORIES / 分类浏览
并发、网络与服务开发,记录连接复用、内存和运行时问题。
记录 Go HTTP Client 出现大量 TIME_WAIT 和短连接的一次排查,沿请求代码、响应体处理与连接生命周期分析复用问题,再讨论 Transport 配置和调优时需要考虑的负载条件。
复盘 Gin 中读取和缓存 Response Body 导致的 OOM,分析内存增长原因并给出更安全的实现方式。
结合 bigcache 的使用场景,介绍 Go binary.PutUvarint 与 Uvarint 的变长整数编码原理和用法。
基于 Go net/http 源码分析 HTTP 请求从连接建立、读取解析到 ServeHTTP 处理和响应写回的完整流程。
结合 Go 汇编分析 Copy-On-Write 赋值操作是否具备原子性,以及并发读写时需要注意的问题。
深入分析Go语言select关键字的实现原理,介绍scase与hselect等核心数据结构,以及无case、单case、非阻塞和多case场景下的运行机制。
翻译介绍 Go Context 的设计与使用方式,包括请求取消、超时控制和跨 Goroutine 传递请求范围数据。
翻译介绍 Go net/http 的各类超时设置,通过时序分析区分服务器端和客户端不同阶段的超时行为。
详解Go程序初始化顺序,包括包导入、常量变量初始化、init函数执行的完整流程和注意事项。
对比Goroutine与系统线程的区别,包括栈空间管理、调度机制、切换代价等核心差异,理解Go并发编程的优势。