我正在尝试找出程序的瓶颈。根据基准测试结果,该进程在runtime / select.go的485行被阻塞了相当长的时间,这是由http。(* persistConn).writeLoop引起的,但是我不知道根本原因。
我试图分析程序中的http操作。但令我印象深刻的是,由多个goroutine并行执行的url提取操作并没有成为很大的负担。
我也没有在程序中使用“选择”以下是“源”视图中的pprof输出:
runtime.selectgo
/usr/lib/golang/src/runtime/select.go
Total: 2.75mins 2.75mins (flat, cum) 79.42%
480 . . }
481 . . goto retc
482 . .
483 . . retc:
484 . . if cas.releasetime > 0 {
485 2.75mins 2.75mins blockevent(cas.releasetime-t0, 1)
486 . . }
487 . . return casi, recvOK
488 . .
489 . . sclose:
490 . . // send on closed channel
我想知道这笔费用的可能原因或分析这笔费用的原因的方法。