Ruby on Rails - 服务器内存峰值和用户注销

问题描述 投票:0回答:1

我们有一个相当典型的 Ruby on Rails 6.1 应用程序,带有 Redis 缓存存储,我们也将其用于会话存储。我们正在使用 Devise 和一个带有大量 graphql 请求的单页应用程序。

最近服务器上的内存逐渐增加,直到达到 95%。我们正在努力解决...

奇怪的是,对用户的响应似乎是他们正在注销。这有道理吗?我预计响应缓慢或失败,但用户会话不会被终止。他们可以刷新并重新登录,并且通常可以继续工作(可能会访问不同的 Web 服务器,当前运行于 ~6-8 并且已经运行了很长时间)。通常情况下,我希望在服务器上看到错误(通过 Sentry),表明我们存在内存分配问题,但我们只是看到用户注销,而 Sentry 中没有真正的错误。

Redis 服务器似乎没有任何提升的指标(CPU 占用率为 3%,内存占用约为 25%)。最近唯一的重大变化是我们将 PostgreSQL 从 11 升级到 15。

对于什么会导致用户注销有什么想法吗?

通常,当服务器内存使用率很高时,我们会重新启动它们,从而解决问题。

为了解决内存问题,我们正在研究 jemalloc 并调整服务器大小。

ruby-on-rails session redis devise
1个回答
0
投票

现在无需任何分析工具即可识别问题。我强烈建议在生产服务器上使用 rbspy 一段时间来发现内存分配及其发生位置。这个工具非常轻量级,可以在产品服务器上使用。这就是我能说的。

© www.soinside.com 2019 - 2024. All rights reserved.