05 2014 档案

摘要:把Go程序变小的办法是:go build -ldflags “-s -w” (go install类似)-s去掉符号表(然后panic时候的stack trace就没有任何文件名/行号信息了,这个等价于普通C/C++程序被strip的效果),-w去掉DWARF调试信息,得到的程序就不能用gdb调试了... 阅读全文
posted @ 2014-05-26 16:13 ghost&240 阅读(353) 评论(0) 推荐(0)
摘要:如何利用golang自带的profile工具进行应用程序的性能调优,前一段时间我做的日志分析系统在线上遇到了一个问题,就是分任务的系统down机了,日志处理延迟了10几个小时,这个时候任务分发系统重启之后开始分发任务,但是一下子就承受了十几个并发任务,导致内存消耗过快,直接吃掉了16G的内存,这可急... 阅读全文
posted @ 2014-05-21 11:58 ghost&240 阅读(2824) 评论(0) 推荐(0)
摘要:Go是很实在的编程语言,从一开始就提供了很详细的运行状态信息。产品上线后的调优和排查疑难杂症都得靠这些状态信息。这边总结一些我们项目里用到的状态监控手段。pprofGo自带了一个pprof工具,这个工具可以做CPU和内存的profiling,官方的博客有一篇文章介绍用法:《Profiling Go ... 阅读全文
posted @ 2014-05-21 11:54 ghost&240 阅读(1647) 评论(0) 推荐(0)
摘要:在go里面,string和slice的互换是需要进行内存拷贝的,虽然在底层,它们都只是用 pointer + len来表示的一段内存。通常,我们不会在意string和slice的转换带来的内存拷贝性能问题,但是总有些地方需要关注的,刚好在看vitess代码的时候,发现了一种很hack的做法,stri... 阅读全文
posted @ 2014-05-20 21:09 ghost&240 阅读(1094) 评论(0) 推荐(0)