Phusion客运提供了在N个处理内存问题的请求之后重新启动工作进程的能力,我想知道Puma是否有类似的设置?我没有在文档或代码中找到任何合适的东西,但我以前并没有使用过Puma,所以可能缺少了一些东西。
乘客特性的文档是这里
PassengerMaxRequests 应用程序进程将处理的最大请求数。在处理了这么多请求之后,应用程序将被关闭,Phusion乘客将重新启动它。值为0表示没有最大值:因此,当达到空闲超时时,应用程序进程将被关闭。 如果应用程序正在泄漏内存,则此选项非常有用。通过在一定数量的请求之后关闭它,操作系统保证释放它的所有内存。
目前,我在Heroku上遇到了问题,我们在Rails应用程序上达到内存配额限制的时间大约为12-14小时,这纯粹是因为GC导致内存使用量急剧增加。我也会尝试调优我们的GC设置,但是我发现这在过去的生产环境中是一个有用的特性,所以如果它可用的话,我仍然想设置它。
发布于 2022-07-14 00:57:20
你绝对可以做到!不知道你是不是该这么做。还有其他指标可以依赖,比如内存使用吗?
但是要回答您的问题,您可以创建一个Rack类,您可以将其放在应用程序之前。在该机架应用程序中,传递所有相同的变量,并添加1到计数器。
然后,当计数器命中所需的数字时,执行美洲狮热重启。在为当前请求提供服务之后,您可能需要计划热重新启动。
您也可以有一个经常性的定期Rake任务,只需检查计数器和hotrestart美洲狮。
https://stackoverflow.com/questions/31875769
复制相似问题