静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言
线上一个 Go 编写的任务调度服务近期出现内存缓慢上涨,pprof 显示 goroutine 数量随时间线性增加,重启后恢复正常但几天后又复现。该服务负责从消息...
线上服务做 JSON 序列化时,每个请求都 json.Marshal 一次,压测下来 GC 频率明显偏高,pprof 里 encoding/json 的分配占了...
线上一个 Go 写的订单同步服务运行几天后内存缓慢上涨,pprof 显示大量 goroutine 卡在 chan receive,追溯到 context.Wit...
在 Go 里用 http.Server 启动服务很简单,但关闭时如果只调用 Shutdown 就以为万事大吉,空闲连接可能还会被复用,导致 Close 之后仍有...
在 Go 服务里频繁创建临时对象会让 GC 压力变大,sync.Pool 常被拿来复用缓冲区、请求上下文这类短生命周期对象。但不少人用完之后发现分配次数没降多少...
在 Go 服务里调用外部 HTTP 接口时,很多人会默认 http.Client 的底层连接池能自动复用连接,但实际压测或线上观察时,经常发现 TCP 连接数持...
写 Go 服务时经常把耗时操作丢到后台 goroutine 里,然后用 context.WithCancel 或 WithTimeout 控制生命周期。但不少人...
线上一个用 Go 写的消息推送服务在高峰期内存缓慢上涨,pprof 显示大量 goroutine 卡在 chan receive 上。排查后发现,大部分泄漏的 ...
在 Go 写高并发服务时,很多人会听说 sync.Pool 能减少 GC 压力:把频繁创建销毁的临时对象放进池子里复用,听起来很美好。但实际用起来经常出现诡异现...
线上一个 Go 写的定时任务服务跑了两周后 RSS 涨到 3GB 多,pprof 显示 goroutine 数量持续缓慢上升。这类问题排查起来不复杂但容易被忽略...
在 Go 里用 context.WithCancel 做超时控制或请求取消时,很多人会因为一个细节踩坑:cancel 函数到底该在什么时候调用。常见写法是 ct...
线上一个 Go 写的网关服务在流量高峰期频繁出现 cannot assign requested address 报错,同时监控显示 netstat 中 TIM...
线上有个导出接口偶尔会卡住连接池。请求进来后用户等不及直接关页面,HTTP 请求的 context 被取消,逻辑层也确实收到了 context.Canceled...
线上一个 Go 写的推送网关服务,部署后内存曲线呈现缓慢爬坡,每隔两三天就得手动重启一次,否则 RSS 会逼近容器限制触发 OOM Kill。pprof 的 h...
线上服务里有个数据同步任务,主 goroutine 通过 context.WithCancel 创建了一个可取消的 context,传给几个 worker 去并...
线上一个日志聚合服务在 QPS 翻倍后 GC 压力突然变大,pprof 显示 runtime.mallocgc 占了近三成 CPU。这个服务每秒要处理几十万条日...
线上一个用 Go 写的 HTTP 网关服务,每隔两三天内存就涨到告警阈值,重启后恢复,pprof 看 goroutine 数量在缓慢爬升,堆内存里有一批带着 h...