小红花·文摘
  • 首页
  • 广场
  • 排行榜🏆
  • 直播
  • FAQ
Dify.AI
省下 10% CPU!Uber 揭秘 Go 栈扩容的隐秘代价

Uber团队在优化Go语言微服务性能时发现,Goroutine的栈扩容消耗了近10%的CPU资源。通过修改Go运行时,他们成功将这一损耗降低至0.0047%。这一研究推动了Go语言的改进,未来将惠及全球开发者。

省下 10% CPU!Uber 揭秘 Go 栈扩容的隐秘代价

Tony Bai
Tony Bai · 2026-05-27T16:00:00Z

Go 语言中的 `context` 包用于管理请求的超时和取消信号,以防止 goroutine 泄漏。出现 "context deadline exceeded" 错误通常是因为请求未在设定的超时时间内完成。为避免此错误,应合理设置超时时间,使用 `context.WithTimeout`,监控请求,优化代码逻辑,并记录和分析错误,以提高系统的可靠性和用户体验。

为什么你应该在代码中消除 "context deadline exceeded" 错误

了迹奇有没
了迹奇有没 · 2026-04-30T07:03:31Z

Go语言的调度器通过用户态实现M:N调度,支持百万个轻量级goroutine并发运行。其GMP模型中,G代表goroutine,M为操作系统线程,P是逻辑CPU资源。Go调度器采用FIFO队列和工作窃取策略,减少内核调度开销,提高创建和切换速度。与Linux CFS调度器相比,Go设计追求高吞吐量,适合处理大量并发任务。

Go 调度器深度拆解:goroutine 到底对 CPU 做了什么

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-04-18T00:00:00Z
为什么说 go 语句是新时代的 goto?四大法则拯救失控 goroutine

Go语言的go语句简化了并发任务的创建,但也可能导致资源泄漏和死锁。论文提出了结构化并发的四大法则,以控制goroutine的生命周期,提升系统的可靠性和可维护性。

为什么说 go 语句是新时代的 goto?四大法则拯救失控 goroutine

Tony Bai
Tony Bai · 2026-04-15T16:00:00Z
别再无脑 go func() 了!Go 资深布道师 Dave Cheney 的 Goroutine 管理哲学

Go语言的Goroutine管理需谨慎。Dave Cheney强调Goroutine是有限资源,启动时需考虑停止机制,以防内存泄漏。应优雅管理Goroutine,使用Context进行协同停止。库设计应将并发权留给调用者,确保用户能控制Goroutine的生命周期。Cheney提出pkg/group作为现代Go微服务的管理方案,强调责任感与管理的重要性。

别再无脑 go func() 了!Go 资深布道师 Dave Cheney 的 Goroutine 管理哲学

Tony Bai
Tony Bai · 2026-04-12T16:00:00Z

本文讨论了一个Goroutine泄漏案例,导致内存占用达到47GB和50847个Goroutine。问题源于WebSocket服务中的三个错误:未调用的取消函数、未停止的Ticker和阻塞的Channel。修复措施包括确保生命周期闭环、停止Ticker和关闭Channel,并建议使用goleak库进行监控和测试,以防止类似问题再次发生。

凌晨3点的警报:一个导致 50000 多个 Goroutine 泄漏的 Bug 分析

Tony Bai
Tony Bai · 2026-01-21T16:00:00Z

本文探讨了Go语言的内存管理问题,指出许多开发者对Go的状态理解不清,导致内存泄漏。关键在于理解goroutine不拥有内存,只有引用才拥有。常见的内存锚点包括未取消的context、未消费的channel和长存的goroutine。开发者可通过pprof等工具诊断和修复内存问题,强调设计清晰的所有权和生命周期。

内存去哪儿了?一个让大多数 Gopher 都无法清晰回答的问题

Tony Bai
Tony Bai · 2026-01-14T16:00:00Z

Felix Geisendörfer在GopherCon 2025上介绍了一种基于关键路径分析的新方法,旨在提高Go性能分析的准确性。该方法通过追踪goroutine状态变化,识别影响请求的关键因素,帮助开发者更有效地定位性能瓶颈,预计将实现自动化诊断,提升Go开发效率。

Go 性能分析的“新范式”:用关键路径分析破解高并发延迟谜题

Tony Bai
Tony Bai · 2025-12-23T16:00:00Z

Go语言中的“Goroutine气泡”是一种新并发概念,允许goroutine附加特殊状态。最近,Go团队接受了统一气泡行为的提案,所有新创建的goroutine将默认继承气泡。这一变化体现了Go在可观测性、安全性和并发抽象方面的进步。

Goroutine “气泡”宇宙——Go 并发模型的新维度

Tony Bai
Tony Bai · 2025-12-19T16:00:00Z

Go语言的goroutine以轻量和高效著称,但其动态增长栈的机制存在性能开销。开发者Arseny Samoylov提议用“缺页中断”替代现有的栈检查,可能提升3%-5%的性能。此提案引发社区讨论,创始人Rob Pike认为实现复杂且成本被夸大,最终未被采纳,反映了Go社区的活力与探索精神。

Goroutine 栈增长机制新提案:用缺页中断替代栈检查?Rob Pike 亲自下场“劝退”

Tony Bai
Tony Bai · 2025-11-19T16:00:00Z

Go 语言的 sync 包在过去两年中经历了重要演进,包括新增 API、性能优化和开发者体验提升。新增的 WaitGroup.Go 方法简化了 goroutine 启动,sync.Map 增加了 Clear 和 Swap 方法并优化了内部实现。文档和静态分析的改进提高了代码的正确性,sync/atomic 包也进行了现代化,鼓励使用新类型。整体上,sync 包朝着更易用、安全和高性能的方向发展。

Go sync 包近两年发展综述

鸟窝
鸟窝 · 2025-09-30T16:00:00Z

Go 1.25发布了testing/synctest,旨在简化并发测试,但也暴露了一些bug。文章分析了三个主要问题,涉及io.Pipe、context和sync.WaitGroup,强调了正确使用并发原语的重要性。这些案例帮助开发者理解synctest的设计哲学和使用方法,从而编写更可靠的并发代码。

并发测试神器 synctest的“成人礼”:从goroutine泄漏到微妙的竞态,Go团队如何修复三大“首日bug”?

Tony Bai
Tony Bai · 2025-09-28T16:00:00Z

Go语言的死锁问题影响程序稳定性。新提案通过改进垃圾收集器(GOLF)检测永久阻塞的goroutine,已在Uber验证,显著提升了并发编程的调试能力和生产环境的稳定性。

Goroutine泄漏防不胜防?Go GC或将可以检测“部分死锁”,已在Uber生产环境验证

Tony Bai
Tony Bai · 2025-07-23T16:00:00Z

在多核处理器时代,后端工程师需掌握并行编程。Guy L. Steele Jr. 提出应关注独立性而非并行本身,强调“分治”和“结合性”原则,鼓励将问题分解为独立子问题以简化并行设计。Go 语言通过 Goroutine 和 Channel 降低并发编程复杂性,但仍需开发者主动设计并行策略。

Go并行编程的“第一性原理”:Guy Steele 教你如何“不去想”并行

Tony Bai
Tony Bai · 2025-06-28T16:00:00Z

本文介绍了Go语言的并发调度系统,分析了其设计目标、挑战及实现过程,旨在帮助开发者深入理解调度器的原理与决策。该专栏包含三篇文章,涉及goroutine设计、可伸缩性及调度艺术,适合希望提升技术深度的读者。

解构Go并发之核,与Dmitry Vyukov共探Go调度艺术

Tony Bai
Tony Bai · 2025-06-17T16:00:00Z
Go协程池深度解析:原理、实现与最佳实践

协程池通过限制goroutine数量和共享任务队列,提高程序稳定性,避免性能下降。适用于大量任务流,确保并行操作受控,从而更高效地完成任务。

Go协程池深度解析:原理、实现与最佳实践

郑文峰的博客
郑文峰的博客 · 2025-06-09T20:07:50Z
如何在Go中等待多个goroutine

在Go中,主goroutine需要等待其他goroutine完成任务。常用方法包括sync.WaitGroup(简单高效,适合固定任务)、Channel(灵活但管理复杂)、context(支持取消和超时)以及errgroup(结合错误处理与等待,适合现代应用)。选择合适的工具可以确保程序逻辑清晰。

如何在Go中等待多个goroutine

DEV Community
DEV Community · 2025-05-28T23:41:42Z
深入探讨Go语言内存模型:提升代码质量的实用技巧

Go语言的内存模型通过高效的垃圾回收和内存分配简化了内存管理,支持轻量级的goroutine和并发,降低内存占用。了解内存模型有助于开发者优化代码,避免性能问题和内存泄漏。通过结构体优化、对象重用和GC调优,可以显著提升应用性能。

深入探讨Go语言内存模型:提升代码质量的实用技巧

DEV Community
DEV Community · 2025-05-28T00:50:17Z
Go语言中的并发测试:驯服我的Netcat广播器和共享状态

本文探讨了如何有效测试Go语言中的并发代码,特别是聊天应用的广播功能。通过使用sync.WaitGroup同步多个goroutine,避免了不可靠的time.Sleep()。同时,介绍了优雅关闭goroutine的方法,确保资源不泄露,并强调了处理客户端断开连接的测试场景及使用sync.Mutex管理共享状态的重要性。这些方法提升了测试的可靠性和稳定性。

Go语言中的并发测试:驯服我的Netcat广播器和共享状态

DEV Community
DEV Community · 2025-05-26T19:40:49Z
理解Go中的goroutine

在Go语言中,goroutine是实现并发的基本概念,通过在函数调用前加上关键字go来创建。它们由Go运行时管理,适合处理网络连接、I/O操作和后台计算。Go还提供通道用于goroutine间的安全通信,避免竞争条件。

理解Go中的goroutine

DEV Community
DEV Community · 2025-05-22T08:21:41Z
  • <<
  • <
  • 1 (current)
  • 2
  • 3
  • >
  • >>
👤 个人中心
在公众号发送验证码完成验证
登录验证
在本设备完成一次验证即可继续使用

完成下面两步后,将自动完成登录并继续当前操作。

1 关注公众号
小红花技术领袖公众号二维码
小红花技术领袖
如果当前 App 无法识别二维码,请在微信搜索并关注该公众号
2 发送验证码
在公众号对话中发送下面 4 位验证码
友情链接: MOGE.AI 九胧科技 模力方舟 Gitee AI 菜鸟教程 Remio.AI DeekSeek连连 53AI 神龙海外代理IP IPIPGO全球代理IP 东波哥的博客 匡优考试在线考试系统 开源服务指南 蓝莺IM Solo 独立开发者社区 AI酷站导航 极客Fun 我爱水煮鱼 周报生成器 He3.app 简单简历 白鲸出海 T沙龙 职友集 TechParty 蟒周刊 Best AI Music Generator

小红花技术领袖俱乐部
小红花·文摘:汇聚分发优质内容
小红花技术领袖俱乐部
Copyright © 2021-
粤ICP备2022094092号-1
公众号 小红花技术领袖俱乐部公众号二维码
视频号 小红花技术领袖俱乐部视频号二维码