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

#go

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

Go 服务中 time.Ticker 未停止导致的内存泄漏与 goroutine 堆积排查

用户11716263

线上一个用 Go 写的推送服务跑了两周后内存从 80MB 涨到 600MB 以上,pprof 显示 goroutine 数量从启动时的几十个涨到两万多,而且基本...

900

Go 服务内存泄漏排查:从 goroutine 堆积到连接池误用

用户1839651

线上一个 Go 写的 API 网关运行几天后 RSS 持续上涨,重启后恢复,pprof 显示堆内存并不高,但 goroutine 数量从启动时的几百涨到几万。这...

400

Go 服务中 HTTP 连接复用的一个坑:为什么你的 Keep-Alive 没生效

超哥前端记录

线上有个 Go 写的内部 API 网关,最近下游服务反馈连接数偏高,而且每次请求的 TCP 建连耗时明显。网关本身用的是标准库 net/http,客户端也按常规...

500

Go 服务中 context 取消没生效?检查一下你传的是不是 context.Background()

用户1839651

线上一个 Go 服务在压测时 goroutine 数量持续上涨,pprof 显示大量 goroutine 卡在数据库查询和下游 HTTP 调用上,但上游请求早就...

2100

Go 服务中 sync.Pool 用错反而拖慢性能?从一次压测说起

用户11716263

线上一个 Go 编写的网关服务在压测时吞吐量上不去,pprof 显示 GC 频率异常高,trace 里大量时间花在对象分配和标记清理上。团队最初怀疑是日志拼接或...

2500

Go 服务中 context 取消不生效导致 goroutine 泄漏的排查与修复

用户12771345

线上一个用 Go 写的 HTTP 服务跑了几周后内存缓慢上涨,pprof 看到 goroutine 数量从几百涨到上万不回落。服务逻辑不复杂:接收请求后启动几个...

4010

Go 服务中 context 取消信号为什么没传到下游?一个真实调用链的排查记录

用户12771345

线上有个 Go 服务偶尔出现 goroutine 堆积,pprof 显示大量 goroutine 卡在 HTTP 请求和数据库查询上,明明上游已经超时返回了,下...

1910

Go 服务在 Kubernetes 中优雅关闭:从信号处理到连接 draining 的完整链路

用户11716263

在 Kubernetes 里滚动更新或缩容时,Pod 收到 SIGTERM 后如果直接退出,正在处理的 HTTP 请求、gRPC 调用和后台任务会被硬中断,客户...

4110

深入理解 Go 的 context.WithCancel 及其在 HTTP 请求中的资源泄漏问题

超哥前端记录

Go 的 context 包几乎在每个生产项目里都会用到,但 context.WithCancel 创建的 cancel 函数如果忘记调用,会导致父 conte...

2910

告别手敲 iptables!纯 Go 单文件网络防火墙:内核级拦截与 30 秒防锁死实战

暗夜铭少

在腾讯云上买了一台轻量应用服务器,第一件事往往是配置安全组。但如果你想在服务器内部做更精细的流量管控(比如按国家封锁海外恶意扫描、做并发连接限制),就不得不面对...

6100

从一张 403 拦截页说起:拆解纯 Go 语言 WAF 的“确定性”防御逻辑

暗夜铭少

在安全运维中,最怕的不是被攻击,而是“不明不白地被攻击”或“不明不白地拦了业务”。最近在测试一款基于纯 Go 写的反向代理 WAF(YSL 语枢·盾甲 WAF ...

4700

Go 中 time.Ticker 使用不当导致的内存泄漏与 goroutine 堆积

用户1839651

在 Go 服务里用 time.Ticker 做定时任务很常见,比如定期刷新缓存、上报指标、清理过期连接。但很多人只在 for range ticker.C 里处...

6510

Go 服务中使用 database/sql 连接池时,为什么你的连接数总是降不下来

用户1839651

线上一个 Go 写的订单查询服务,每天上午十点高峰过后,MySQL 的活跃连接数一直维持在 200 以上不回落,而实际 QPS 已经掉到个位数。DBA 那边开始...

7610

Prometheus 告警规则中 for 与 rate 窗口的配合问题

用户11716263

线上服务接入 Prometheus 之后,经常遇到一类告警问题:规则写上了 for: 5m,但告警依然在流量抖动时反复触发和恢复,或者反过来,明明已经持续异常几...

5610

Go 中 time.Ticker 的资源泄漏:从一次线上 CPU 异常说起

用户12771345

线上服务跑了两天之后 CPU 使用率慢慢从 8% 涨到 40%,goroutine 数量也一路攀升,pprof 一看发现有上万个 goroutine 卡在 ti...

7410

Go 里用 context.WithCancel 管理 goroutine 时,为什么总有人忘记调用 cancel

用户1839651

写 Go 服务时经常遇到这样的代码:HTTP handler 里起一个后台 goroutine 去写日志、发异步任务,handler 返回后 goroutine...

6410

Golang 中 time.Timer 的正确释放方式:避免 goroutine 泄漏与 Reset 陷阱

超哥前端记录

在 Go 里用 time.After 或者 time.NewTimer 做超时控制几乎是日常操作,但真正把 Timer 用对的人并不多。常见问题集中在两块:一是...

8410

Go 里用 http.MaxBytesReader 限制请求体,别等到 OOM 才后悔

用户11716263

线上一个图片上传接口最近偶尔被扫,攻击者直接往接口 POST 几百 MB 的随机数据,服务内存瞬间飙高,最后被 k8s 的 liveness probe 重启。...

9910

Go 服务中 context 取消未传递导致 goroutine 泄漏的排查与修复

用户11716263

最近在排查一个 Go 编写的订单处理服务时,发现压测结束后 goroutine 数没有回落,从 pprof 看大量 goroutine 卡在 channel 接...

9510

Go 服务中 context 取消后仍写数据库?检查你误用了 context.Background()

超哥前端记录

写 Go 后端时经常遇到这样的场景:HTTP 请求进来,链路里一路传 context.Context,到了数据访问层顺手调用 db.ExecContext(ct...

10710
领券