@
feelinglucky 我前段时间用 golang 在写 TG bot,写完以后 win 和 linux 上跑着一切正常,我就在 debian stable 上交叉编译了 arm32 版本丢到了树莓派 4 上。然后开始对树莓派压测,但是每次都会碰到程序崩溃,看报错信息像是请求无法执行导致我无法收到完成信息,最后让我重调了很多次 TG API 。
我开始以为是我流量被 GFW 检测到了( PI->just * socks->TG API ),后来我就自己架了 V*N,所有流量都保护起来( PI->VPS->TG API )。然后发现问题依旧。
没办法,开始认真 debug 。有可能是系统问题,也可能是 go runtime 的兼容问题。分析了一通以后发现是一类负责 http 连接 goroutine 有了问题(用了官方的 net 包)。最后发现,go runtime 好像对于一个关闭了的 http 连接有了抢占式的资源调度,runtime 对于这个连接的 terminated 标记好像迟了一些。到这为止,这个 bug 已经不是我能修的了。
后来本应该是我开发机的树莓派 4 成功吃灰,功能用 java 重写了,真的稳如死狗...