go 关键字太轻,于是协程被到处撒:每个 HTTP 请求开一个、数据库查询里再开一个、循环里顺手再来一批。本地几百次请求看不出问题,上线后协程悄悄堆积却不会报错。文章拆开运行时内部:GMP 调度器如何用 work-stealing 在处理器之间搬运可运行的协程,2KB 起步的连续栈如何增长与收缩,以及 channel 底层的 hchan 环形缓冲怎样完成收发。