go1.6升级带来响应延迟的问题

董泽润 · · 1668 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Go1.6 放出来很久了,这里是 Release,比较注意一点 Map 不加锁在并发访问时会 Crash.

先说问题:升级go1.6后,线上的GC时间显显变短,但是响应时间变大,不可接受。


这几个小时完全不能接受



线上响应

显显看到 小于1ms的请求大幅减少,1ms~10ms请求突增,如果每个请求1ms,整体QPS猛降到1000,完全不能接受。


升级后

系统日志看升级后延迟好大


升级前

对比升级前的响应,基本不到1ms


不知道已入坑的同学,有无遇到这个问题。在官方的 Issues 也提到过,需要进一步的测试

疑似内存泄漏问题20160315

因为升级go1.6有一个map并发访问的问题,所以在 go install 的时间增加了 -race选项

The runtime has added lightweight, best-effort detection of concurrent misuse of maps. As always, if one goroutine is writing to a map, no other goroutine should be reading or writing the map concurrently. If the runtime detects this condition, it prints a diagnosis and crashes the program. The best way to find out more about the problem is to run it under therace detector, which will more reliably identify the race and give more detail.

The compiler, linker, and go command have a new-msanflag analogous to -race and only available on linux/amd64, that enables interoperation with theClang MemorySanitizer. This is useful for testing a program containing suspect C or C++ code. You might like to try it while testing your cgo code with the new pointer rules.

测试程序通过后,直接部署到线了,过了半天发现内存吃没了


TOP

后来把 -race选项去掉就好了,还是理解不透,汗!

去掉后线上响应也正常了


响应时间

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:董泽润

查看原文:go1.6升级带来响应延迟的问题

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1668 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传