我已经分叉了rack-timeout gem,所以我可以添加一些功能——即,捕捉超时事件,记录它们,并发送 503。
行为符合预期。但是,自部署以来,我的应用程序的内存占用量不断增长,直到我不得不重新启动它。在它成长的同时,它的行为是正确的,它的表现看起来很正常。
当我第一次注意到这一点时,我认为这可能是因为在请求确实消失的情况下,一些线程/内存一直在徘徊。这一系列的实验导致了这个补丁。事实上,在我的本地测试中,如果没有这个补丁,当应用程序遇到(故意)超时请求时,内存会稳定增长,而有了这个补丁,内存就会保持在低水平和正常状态。
所以,我以为我解决了这个问题。但我没有——我的生产应用程序的内存仍在不断增长。(我还没有尝试在生产模式下本地测试我的应用程序——接下来我会这样做)。
什么可能导致我的 Rack 应用程序中的内存泄漏?