2010-06-04 109 views
5

我的Ruby on Rails应用程序消耗大约129 MB的内存..这是正常的吗?Ruby on Rails应用程序应占用多少内存?

我每天约3000独立访客,我也没有复杂的查询......

我的用户表有大约18K行。

+0

你在哪个应用程序服务器上运行? – x1a4 2010-06-04 06:28:02

+0

你的服务器上有多少内存。 129真的很低。 – 2010-06-04 08:40:03

+0

杂种..我有4GB '根@ veraserver01 [〜]#免费 总使用的无共享缓冲器缓存 号负责:4149500 3959880 189620 0 261532 1556064 -/+缓冲器/高速缓存:2142284 2007216 交换:2096440 116 2096324' 这是问题吗? – Will 2010-06-05 08:08:25

回答

4

129MB对我来说似乎不算太多,我发现更重要的是这个数字会随着时间的推移而增长吗?

如果是这样的问题,可能是你如何你的数据集的多加载到内存中的请求

退房:http://www.engineyard.com/blog/2009/thats-not-a-memory-leak-its-bloat/

在breif

:实例太多的活动记录的对象是一个地方,轨道应用程序的内存占用真正增长。

如果在一个请求中,出于某种原因你要迭代所有18k用户,更糟糕的是,迭代所有帖子(或者你有的任何关联),你会实例化一大堆对象,应该)在请求之后被清除,但是ruby在分配之后不会将内存回送给系统。

+1

感谢您的回应丹尼斯,我有一个问题,虽然..有多少活动记录对象太多 我不重复所有18K用户,但我更新64个活动记录对象(一个接一个)时,用户保存一个特定的形式......我应该在单个查询中更新吗? 另一件事是,我的Rails应用程序不断崩溃......它说:“[FATAL]未能分配内存” – Will 2010-06-04 07:22:01

+1

每个保存更新查询过多 – 2010-06-04 08:46:59

+0

这取决于对象有多大,但你应该能够处理有成千上万的物体。 当你做更新时,你是否在对象上执行“:include =>”的操作? 试图找到一个更有效的方式来做到这一点,而不是64个其他对象的64更新似乎是聪明的。 做什么特别让你的应用程序崩溃? 你的服务器有多少内存?你没有吗?应用程序何时启动/在它死前有多大?在谷歌搜索这个致命的错误。 再次,这些家伙比我聪明。 http://www.engineyard.com/blog/2009/thats-not-a-memory-leak-its-bloat/ – 2010-06-04 19:25:43

0

我见过轨应用程序高达500MB。我敢肯定,更大的存在。唯一访问者和数据库查询不是内存使用的原因。这是Ruby中昂贵且大容量的内存计算。

尝试AB测试其中一些方法,并查看您的内存使用量有多高。这可能会解决一些内存问题。