0

我试图找出我的程序的瓶颈。根据基准测试结果,该进程在 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 

阻塞火焰图

我想知道这个成本的可能原因或分析这个成本原因的方法。

4

0 回答 0