gpt4 book ai didi

ruby-on-rails-3 - Rails 应用程序占用所有服务器内存

转载 作者:行者123 更新时间:2023-12-05 08:01:50 26 4
gpt4 key购买 nike

我在 ubuntu VPS(1GB RAM)上运行一个 Rails 应用程序(Passenger 和 nginx with mongodb 和 memcached)应用程序 - 从几天开始,我看到在启动 nginx 之后,ruby 进程慢慢占用了所有内存即使服务器上没有请求,该框也会出现。 new_relic 显示以下内容 enter image description here

顶部输出

top - 12:02:23 up  2:47,  1 user,  load average: 0.03, 0.02, 0.00
Tasks: 16 total, 1 running, 15 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1048576k total, 1048576k used, 0k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached

9993 mongodb 18 0 128m 29m 21m S 0 2.9 0:17.06 mongod
1135 nobody 18 0 71664 18m 856 S 0 1.8 0:00.55 memcached
14310 passenge 15 0 500m 434m 4660 S 0 42.5 0:13.59 ruby
15496 passenge 15 0 425m 360m 4648 S 0 35.3 0:13.06 ruby

我认为存在一些代码泄漏内存 - 或者我需要以某种方式在 passenger 达到某个阈值时终止昂贵的 ruby​​ 进程。请就这两个问题分享一些想法。

最佳答案

很难回答,因为没有太多信息可以继续,所以我会相当笼统地回答这个问题。显示随时间变化的内存使用情况的图表,或显示响应时间下降的图表会很有帮助。

无论如何,我有一个类似的设置 (Rails/Passenger/Nginx/MongoDB/VPS-1GB)。

  • 首先通过检查日志确认没有请求(并确保在 Nginx 中打开足够的日志记录)来确认您没有请求的假设

  • 尝试禁用 New Relic(因为它会随着时间的推移向他们的服务器发出心跳),并检查您拥有的任何其他监控软件(例如 Nagios)。

  • 尝试使用免费的负载测试应用程序(例如 http://loadimpact.com),并在进行主动负载测试时观察内存/GC 和处理器图表。如果您发现内存使用量逐渐超过正常数量,您可以打赌某处存在内存泄漏。

如果你发现你这样做了,那真的只是消除变量的问题——我会在 Nginx 上暂停 Rails,但你可以在没有前端的情况下运行 Rails,或者关闭 passenger 并只访问 Nginx 中的所有静态 Assets 尝试找出原因。

希望这对您有所帮助。

关于ruby-on-rails-3 - Rails 应用程序占用所有服务器内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11599913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com