1
译)Go 语言的内存、指针详解
这是一篇面向即将学习 go 语言并且对指针理念或者 go 的指针类型不是很了解的程序员的内容。
在公众号中回复(非评论)关键词“ 详解 ”即可阅读全文
2
《高并发性能调试经验分享(上)》
作者在4月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug?
凑巧的是,不久之后作者就遇到了这样的问题。在一个项目中需要针对nginx事件框架和openssl协议栈进行了一些深度改造,以提升nginx的HTTPS完全握手计算性能。由于原生nginx使用本地CPU做RSA计算,ECDHE_RSA 算法的单核处理能力只有400 qps左右。前期测试时的并发性能很低,就算开了24核,性能也无法超过1万。核心功能在去年底就完成了开发,线下测试也没有发现问题。经过优化后的性能提升了几倍,为了测试最大性能,使用了很多客户端并发测试https性能。很快就遇到了一些问题:
-
nginx有极低概率(亿分之一)在不同地方 core dump;
-
高并发时nginx存在内存泄漏;
- 因为我们对nginx和openssl的关键代码都做了一些改造,希望提升它的性能。那么如何找到性能热点和瓶颈并持续优化呢?
作者在本文中仔细解读了对以上三个问题的解决方法。
在公众号中回复(非评论)关键词“ 性能调试 ”即可阅读全文
3
360基于Prometheus的在线服务监控实践
作者在参与的项目中,无一例外对监控都有极强的要求,比较常见的方式是写日志,将日志采集到远端进行分析和绘图,或写好本地监控脚本进行数据采集后,通过监控系统客户端push到监控系统中进行打点。基本上我们需要的都能覆盖,但仍然有一些问题在使用上不太舒服,如在大规模请求下日志采集和分析的效率比较难控制,或push打点的粒度和纬度以及查询不够灵活等。
后来接触到《Google SRE》这本书中的一些运维思想,开始尝试使用Prometheus做为几个项目的监控解决方案,获得了很好的反馈,遂分享给大家。
在公众号中回复(非评论)关键词“ prometheus ”即可阅读全文
4
Go 关键字 defer 的一些坑
defer 意为延迟,在 golang 中用于延迟执行一个函数。它可以帮助我们处理容易忽略的问题,如资源释放、连接关闭等。但在实际使用过程中,有一些需要注意的地方(坑),本文会一一介绍什么是 defer?如何理解 defer 关键字?以及Go 中使用 defer 的一些坑。
在公众号中回复(非评论)关键词“ defer ”即可阅读全文
5
Go Plugin的一个bug
Go 1.8中增加了 plugin package,但是仅支持Linux操作系统,并且还有一些已知的bug。可以说,这个插件系统的实现还未达到"产品级"的水平。
The plugin support is currently incomplete, only supports Linux, and has known bugs.
一些已知的bug已经推到 Go1.10甚至以后的版本中修复了。作者在测试Go 1.9中的功能的时候遇到了plugin的一个bug,与大家分享。
在公众号中回复(非评论)关键词“ plugin ”即可阅读全文
6
故障驱动的微服务架构设计
译者之前在线上遇到了一个使用timeout来判断是否失败的真实案例,实际效果很差。阅读本文后,看了文中介绍的各种技术和架构模式,让译者对之前的这个案例有了一个新的认识,就是“快速失败”不应该依赖于传统的比如timeout这种超时机制来进行,也许使用本文中介绍到的技术(比如:Circuit Breakers)要更加地可靠和受控。
有疑问加站长微信联系(非本文作者)