首页
学习
活动
专区
圈层
工具
发布

#go

静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言

Go 服务中 context.WithCancel 的泄漏陷阱:一次 goroutine 堆积的排查记录

用户11716263

线上一个 Go 编写的任务调度服务近期出现内存缓慢上涨,pprof 显示 goroutine 数量随时间线性增加,重启后恢复正常但几天后又复现。该服务负责从消息...

100

Go 里用 sync.Pool 缓存临时对象,别把它当万能池

用户12771345

线上服务做 JSON 序列化时,每个请求都 json.Marshal 一次,压测下来 GC 频率明显偏高,pprof 里 encoding/json 的分配占了...

100

Go 服务中 Context 取消信号为何没生效:从一次 goroutine 泄漏排查说起

用户11716263

线上一个 Go 写的订单同步服务运行几天后内存缓慢上涨,pprof 显示大量 goroutine 卡在 chan receive,追溯到 context.Wit...

4110

Go 中如何正确关闭 HTTP 服务的空闲连接:一个容易被忽略的陷阱

用户12771345

在 Go 里用 http.Server 启动服务很简单,但关闭时如果只调用 Shutdown 就以为万事大吉,空闲连接可能还会被复用,导致 Close 之后仍有...

2100

Go 里用 sync.Pool 缓存临时对象,为什么你的对象池反而更慢了?

用户12771345

在 Go 服务里频繁创建临时对象会让 GC 压力变大,sync.Pool 常被拿来复用缓冲区、请求上下文这类短生命周期对象。但不少人用完之后发现分配次数没降多少...

2410

Go 中 http.Client 连接复用失效的常见原因与实战排查

用户12771345

在 Go 服务里调用外部 HTTP 接口时,很多人会默认 http.Client 的底层连接池能自动复用连接,但实际压测或线上观察时,经常发现 TCP 连接数持...

1900

Go 服务里用 context 取消后台任务时,为什么你的 goroutine 还在跑?

用户12771345

写 Go 服务时经常把耗时操作丢到后台 goroutine 里,然后用 context.WithCancel 或 WithTimeout 控制生命周期。但不少人...

3610

Go 服务中 context 取消没生效,goroutine 泄漏的排查与修复

用户1839651

线上一个用 Go 写的消息推送服务在高峰期内存缓慢上涨,pprof 显示大量 goroutine 卡在 chan receive 上。排查后发现,大部分泄漏的 ...

3400

Go 服务里用 sync.Pool 缓存临时对象,为什么你的内存反而涨了?

用户11716263

在 Go 写高并发服务时,很多人会听说 sync.Pool 能减少 GC 压力:把频繁创建销毁的临时对象放进池子里复用,听起来很美好。但实际用起来经常出现诡异现...

6110

Go 服务里 time.Ticker 忘记 Stop 引发的 goroutine 泄漏排查

用户1839651

线上一个 Go 写的定时任务服务跑了两周后 RSS 涨到 3GB 多,pprof 显示 goroutine 数量持续缓慢上升。这类问题排查起来不复杂但容易被忽略...

8110

Go 的 context.WithCancel 到底该什么时候调用 cancel?一个容易被忽略的 goroutine 泄漏点

用户12771345

在 Go 里用 context.WithCancel 做超时控制或请求取消时,很多人会因为一个细节踩坑:cancel 函数到底该在什么时候调用。常见写法是 ct...

7610

Go 服务中 HTTP 连接池的复用陷阱:从 TIME_WAIT 堆积到连接泄漏的排查

用户1839651

线上一个 Go 写的网关服务在流量高峰期频繁出现 cannot assign requested address 报错,同时监控显示 netstat 中 TIM...

8310

Go 服务里用 context 取消数据库查询,为什么连接还是被占着?

用户1839651

线上有个导出接口偶尔会卡住连接池。请求进来后用户等不及直接关页面,HTTP 请求的 context 被取消,逻辑层也确实收到了 context.Canceled...

6410

Go 服务内存持续上涨却查不到泄漏:一个被 sync.Pool 掩盖的 goroutine 堆积问题

用户1839651

线上一个 Go 写的推送网关服务,部署后内存曲线呈现缓慢爬坡,每隔两三天就得手动重启一次,否则 RSS 会逼近容器限制触发 OOM Kill。pprof 的 h...

8110

Go 中 context.WithCancel 的取消信号为何没有传递到下游 goroutine

用户12771345

线上服务里有个数据同步任务,主 goroutine 通过 context.WithCancel 创建了一个可取消的 context,传给几个 worker 去并...

12110

Go 里用 sync.Pool 缓存临时对象,为什么你的程序反而更慢了?

超哥前端记录

线上一个日志聚合服务在 QPS 翻倍后 GC 压力突然变大,pprof 显示 runtime.mallocgc 占了近三成 CPU。这个服务每秒要处理几十万条日...

10810

Go 服务中 panic 恢复后连接泄漏:一个 defer 顺序引发的血案

超哥前端记录

线上一个用 Go 写的 HTTP 网关服务,每隔两三天内存就涨到告警阈值,重启后恢复,pprof 看 goroutine 数量在缓慢爬升,堆内存里有一批带着 h...

8610
领券