如何降低低内存服务器?

我遇到了一个Rails应用程序的问题,它运行在365MB VPS上,这似乎不是很多。 当同时有超过3-5个用户时,内存不足,开始使用交换,这就是f ******慢。

当我看着top ,我可以看到有很多产生的MySQL实例(远远超过Rails进程)。 这是正常的吗?

你如何推荐缩减低内存环境的应用程序?

我使用的是Ubuntu 9.04,Apache2.2和mod passenger,MySQL 5.075和Ruby 1.8.7

编辑:在你的build议之后,我把VPS升级到了540MB,现在看来已经足够了。 然而,我只是一个穷学生 ,所以我不能在我为自己做的一些项目中抽出太多的钱,直到它开始至less还钱。

会有几个mysql线程,而不是进程。 某些版本的“Top”和“ps”显示线程,就好像它们是单独的进程一样。

MySQL可以随意调整。 调整它的最好方法是对所有表使用单个引擎 – 如果您使用的是InnoDB,则只能使用InnoDB。

然后调整缓冲区,你认为适合 – 主要的是MyISAM密钥caching和innodb缓冲池。 如果您只使用MyISAM,请在my.cnf中使用skip-innodb完全禁用innodb引擎。

就Apache而言,运行最less数量的MaxClients即可; 要么停用keepalive,要么将超时设置得非常低 – keepalive连接仍然会捆绑一个(大量的)Apache进程。

当然,做任何这些事情对于性能都是有害的,所以如果你关心性能衰退的话,在非生产系统上testing一下。

只是购买更多的内存比花费你的时间调整这样一个小盒子更具成本效益。 在我们的工作中,每个开发人员都有一个16G RAM的刀片,仅用于testing目的。 这被认为是合理的,并不是很昂贵。

你将花费大量的时间(并因此花费)调整参数, 可能会产生一个小的内存节省。 只需升级VPS上的内存就可以获得更多的收益。

你需要深入挖掘,准确找出你的记忆力,每个过程需要多less,寻找潜在的泄漏等等。 但我的build议是要回应其他人:取而代之的是更多的RAM。 365MB是花生,并不会扩展。 这个问题是由你select的框架复合 – 在这里阅读Twitter的经验。

选定的出场:

所有的方便方法和语法糖让Rails成为编程人员的乐趣,最终成为绝对的惩罚,在性能方面。 一旦你达到了一定的stream量门槛,要么你需要去除Rails为你做的所有昂贵的整洁东西(RJS,ActiveRecord,ActiveSupport等),或者将应用程序的缓慢部分从Rails中移出,或者两者兼而有之。另外值得一提的是,在这个问题上,任何人都不应该怀疑Ruby本身很慢。

lowendbox.com是一个不错的书签值得网站相关的这个问题(优化低内存服务器)

下面的内容当然不符合你现有的设置,但是考虑切换到像nginx或者lighttpd这样的较轻的httpd。 这两个中的任何一个都可以为你节省很多内存,至less每个静态http连接都是如此。 乘客可用于nginx 。