一个简单的短链服务,使用的 fasthttp,五台机器但是发现最近进程会莫名的死掉,机器为 docker,上面跑了两个服务,有一个服务会莫名的挂了,cpu、内存均不高,qps 100 多吧,也不高 死在了 fasthttp receive chan 上了,但是按理说不应该发生异常的
日志如下:
goroutine 105232869 [chan receive]:
project_path/vendor/github.com/valyala/fasthttp.(*workerPool).workerFunc(0xc4210ada00, 0xc42092a560)
pproject_path/vendor/github.com/valyala/fasthttp/workerpool.go:205 +0x7d
project_path/vendor/github.com/valyala/fasthttp.(*workerPool).getCh.func1(0xc4210ada00, 0xc42092a560, 0xa2f1c0, 0xc42092a560)
project_path/vendor/github.com/valyala/fasthttp/workerpool.go:182 +0x35
project_path/vendor/github.com/valyala/fasthttp.(*workerPool).getCh
project_path/vendor/github.com/valyala/fasthttp/workerpool.go:184 +0x135
1
pmispig 2019-04-22 14:09:55 +08:00
肯定是 panic 了,有完整日志么,从小处说是肯定有 err 被忽略没检测
|
2
noble4cc OP @pmispig 从上面的日志看死从 fasthttp 这个框架跑出来的,这个我们没有改动过代码,按道理来说它是个 server,不应该抛日志的,所有的日志有用的只有这些
|
3
pmispig 2019-04-22 16:16:15 +08:00
@noble4cc 后面肯定还有吧? go 的异常有完整的调用堆栈 0.0,你在哪个地方引入的 fasthttp 会出现在异常的顶层里呀
|
4
goofool 2019-04-22 21:12:40 +08:00
你传给 workerpool 的 WorkerFunc panic 了吧
|
7
abel1989 2019-04-23 16:42:51 +08:00
看一下源码( workerpool.go)的实现吧
|