GopherChina2017-7 GC、协程、并发效率 - Go语言中文社区

GopherChina2017-7 GC、协程、并发效率


广发证券:

金融系统最关心高并发的效率问题

关注GC效率


go没有在gc过程进行压缩,为了跟cgo等对接,性能弱于java


解决办法


支持并发的数据结构
解决协程并发导致缓存失效问题


解决办法,CPU引用计数汇聚,


使用多级hash,达到近似无锁

  • 多级哈希只锁访问的那个单元,增删都不涉及其他它元数据,所以无相关锁,这是个空间换时间的问题
  • 每一级足够大就不容易冲突进入下一级,多个goroutine通常不会访问同一个单元,所以单元里面的锁就不会冲突,实际使用的时候达到近似的无锁并行
  • 实际使用了8级hash,达到8级说明每一级的长度太小了要改大,或者机器扩容

融合替代方案


CGO线程与Go交互存在栈拷贝,频繁创建效率低

网络底层优化
MTU由默认的1500调到9000


网卡支持分片就打开


问题分享
Docker里网卡的分片设置和host虚拟机上的分片设置不一样,导致数据包校验出错


对象池的大小如何确定?
根据监控系统结果来确定

对象池放满了怎么办?
通过这个select来避免这种情况


版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/cbcf456a904b
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 13:08:25
  • 阅读 ( 1442 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢