3

我已经分叉了rack-timeout gem,所以我可以添加一些功能——即,捕捉超时事件,记录它们,并发送 503。

这是我的叉子

这是我 fork 中的 Rack 应用程序/中间件

行为符合预期。但是,自部署以来,我的应用程序的内存占用量不断增长,直到我不得不重新启动它。在它成长的同时,它的行为是正确的,它的表现看起来很正常。

当我第一次注意到这一点时,我认为这可能是因为在请求确实消失的情况下,一些线程/内存一直在徘徊。这一系列的实验导致了这个补丁。事实上,在我的本地测试中,如果没有这个补丁,当应用程序遇到(故意)超时请求时,内存会稳定增长,而有了这个补丁,内存就会保持在低水平和正常状态。

所以,我以为我解决了这个问题。但我没有——我的生产应用程序的内存仍在不断增长。(我还没有尝试在生产模式下本地测试我的应用程序——接下来我会这样做)。

什么可能导致我的 Rack 应用程序中的内存泄漏?

4

1 回答 1

0

您的 Timeout 类中有一个 lambda,它是一个闭包。由于不需要它,我将只定义一个方法。不确定这是否是原因,但这绝对是内存泄漏的可能原因。

于 2013-08-10T15:27:29.593 回答