在8核cpu 15G内存的设备上开启10万个协程处理10万条数据 没有任何log打印的情况下 耗时4min为什么这么慢呀,协程并发处理感觉没用上

golang_gc · · 1703 次点击
虽然协程切换有开销,处理10万条数据也不至于这么慢 1. pprof跟踪 2. 对于单条数据处理做个Benchmark,带上-benchmem看看单次内存分配情况 3. 协程数控制在cpu核心数2倍试试看 最好贴源码,方便大家帮你找问题
#2
更多评论
建议打开`pprof`在线上看运行中的协程数目以及heap 建议在main函数中开启一个新协程显示runtime信息 ``` import _ "net/http/pprof" func main() { go http.ListenAndServ(":8080",nil) } ``` 代码手打的,如果有错别字请见谅。 运行程序,打开浏览器 http://localhost:8080/debug/pprof 你要的数据就会出现了
#1
主要得看协程里具体做的事情,如果是IO任务,启动10万个应该不至于这么慢,如果是计算密集型的任务,最好设计成go routine+channel的任务模式,这样才能减少go routine的切换开销
#3