我的一个Rails应用程序有问题,它运行在365 my的VPS上,这似乎不是很多。当同时有超过3-5个用户时,它就会耗尽内存,并开始使用交换,即f*。
当我查看top时,我可以看到产生了许多mysql实例(远远超过Rails进程)。这是正常的吗?
我使用的是Ubuntu9.04,Apache2.2和mod乘客,MySQL 5.075和Ruby1.8.7
编辑:根据您的建议,我将VPS升级到540 to,目前看来已经足够了。然而,我只是一个贫穷的学生,所以我不能在我主要为自己做的某个项目中投入太多的钱,直到它开始偿还至少一些东西。
发布于 2009-10-30 23:00:10
将有几个mysql线程,而不是进程。某些版本的"Top“和"ps”显示线程,就好像它们是单独的进程一样。
MySQL可以任意调优。优化它的最好方法是对所有表只使用一个引擎--如果您使用的是InnoDB,则只使用InnoDB。
然后根据需要对缓冲区进行优化--主要是MyISAM密钥缓存和innodb缓冲池。如果您只使用MyISAM,则在innodb引擎中完全禁用my.cnf中的skip。
对于Apache来说,运行尽可能少的MaxClients;要么禁用备活,要么设置超时--非常低的保持活动连接--仍然会占用(大量) Apache进程。
当然,做任何这些事情都可能对性能有害,因此,如果您关心性能倒退,那么在非生产系统上测试它。
买更多的公羊可能比花时间调整这样一个小盒子更符合成本效益。在我们的工作中,每个开发人员都有一个带有16G内存的刀片,只是为了测试目的。这被认为是合理的,而且不太昂贵。
发布于 2009-10-31 01:25:31
您将花费大量的时间(因此也是金钱)摆弄调优参数,以可能节省一些内存。只要升级VPS上的RAM,你就能赚到更多的钱。
发布于 2009-10-31 11:52:28
你需要挖掘更多,找出你的内存在使用什么,每个进程需要多少,寻找潜在的泄漏等等。但我的建议是回应其他建议:换来更多的RAM。365 at是花生,根本不会放大。这个问题由于你对框架的选择而变得更加复杂--阅读一下推特体验这里。
选定的产出:
所有方便的方法和语法糖,使Rails这样的乐趣,最终是绝对惩罚,性能方面。一旦达到一定的流量阈值,要么需要去掉Rails为您带来的所有昂贵的整洁的东西(RJS、ActiveRecord、ActiveSupport等)。或者将应用程序的慢部分移出Rails或两者,也值得一提的是,在这一点上,任何人都不应怀疑Ruby本身是慢的。
https://serverfault.com/questions/80047
复制相似问题