Browsed by
月份:2019年4月

golang api中避免内存泄露

golang api中避免内存泄露

你有必要在把golang api投入生产环境前阅读下这篇文章,基于我们的真实经历,因为没有使用正确的方法,我们在每个release都很遇到困难和挣扎。

就在几周之前,我们刚刚修复了一个奇怪的未发现的bug,我们试了很多方法去debug和修复它。这个bug并不是业务逻辑上的问题,因为它已经在生产环境跑了几周了,那是因为我们的自动释放机制,隐藏了这个问题,所以它看上去是正常。

直到最近,我们发现这个问题是因为代码并没有处理好。

架构

首先说下,我们在架构中使用了微服务模式。我们有一个gateway API - 我们叫“main API”,它服务于我们的用户(手机客户端和web页面)。由于它的角色很像API Gateway,所以它的任务就只是处理用户的请求,然后再请求道对应的服务上,然后将reponse返回给用户。这个“main API”完全是使用Golang开发的。为什么选择golang在这里就不详细介绍了。

我们系统的架构图大概如下

问题

我们被main API困扰了好久,他经常down掉,并且返回给...

阅读全文