我有一个在slicehost (256M)上运行的Rails 2.3.8应用程序。我对后端一点也不熟悉,我基本上是按照slicehost教程中的步骤安装Apache的。内存使用率非常高,于是我更改了我的Apache conf文件,将MaxClient数减少到10...但我的那一块还在换。
这是我在我的网站上点击几下后得到的内存使用量:
top - 23:57:12 up 28 min, 2 users, load average: 0.43, 0.54, 0.30
Tasks: 79 total, 1 running, 78 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 97.8%id, 0.1%wa, 0.0%hi, 0.0%si, 2.0%st
Mem: 262364k total, 258656k used, 3708k free, 260k buffers
Swap: 524280k total, 262772k used, 261508k free, 6328k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4004 web-app 20 0 178m 72m 1888 S 0 28.4 0:04.38 ruby1.8
4001 web-app 20 0 172m 61m 1932 S 0 24.2 0:02.72 ruby1.8
3941 root 20 0 164m 57m 1672 S 0 22.5 0:21.44 ruby
3990 web-app 20 0 209m 21m 1696 S 0 8.4 0:18.00 ruby1.8
3950 web-app 20 0 165m 7464 1548 S 0 2.8 0:20.40 ruby1.8
3684 mysql 20 0 224m 6504 2084 S 0 2.5 0:14.34 mysqld
3938 root 20 0 53632 3048 1036 S 1 1.2 0:01.50 starling
3839 root 20 0 243m 1456 1248 S 0 0.6 0:00.34 apache2
3897 www-data 20 0 243m 1452 1072 S 0 0.6 0:00.04 apache2
3894 www-data 20 0 243m 1368 1008 S 0 0.5 0:00.04 apache2
3895 www-data 20 0 243m 1220 960 S 0 0.5 0:00.02 apache2
3888 root 20 0 46520 1204 1100 S 0 0.5 0:02.29 ruby1.8
3866 root 20 0 17648 1184 896 S 0 0.5 0:00.08 bash
3896 www-data 20 0 243m 1180 952 S 0 0.4 0:00.00 apache2
3964 www-data 20 0 243m 1164 956 S 0 0.4 0:00.02 apache2
3892 www-data 20 0 243m 1132 956 S 0 0.4 0:00.00 apache2
3948 www-data 20 0 243m 1132 956 S 0 0.4 0:00.00 apache2
3962 www-data 20 0 243m 1132 956 S 0 0.4 0:00.02 apache2
3963 www-data 20 0 243m 1132 956 S 0 0.4 0:00.00 apache2
3965 www-data 20 0 243m 1080 888 S 0 0.4 0:00.00 apache2
3887 root 20 0 89008 960 796 S 0 0.4 0:00.00 ApplicationPool 我不知道下一步该怎么做。我可以升级到更大的部分,但现在我在这个应用上几乎没有流量,所以我认为这更多的是我的配置或代码的问题?
欢迎任何具体的建议!谢谢
发布于 2010-12-09 08:17:05
看起来你的rails应用程序正在使用你所有的可用内存。我会推荐三件事:
很有用
发布于 2010-12-09 08:30:17
简而言之,256MB对于Rails应用程序来说太紧了。您并没有详细说明您是如何运行rails的,但我假设您使用的是带有Passenger模块的Apache。乘客模块可以根据其保持运行的实例数进行配置。您有4个ruby实例在web-app帐户下运行。我猜这些是乘客的。在配置中,您可以限制Passenger启动的实例数量。这将减少内存需求。
另一方面,当你只使用256MB,并且你只托管1个rails应用程序时,使用另一个安装可能会更好。我之前使用的设置是一个Nginx web服务器,以及一个具有2个mongrels的混合集群( 192MB,应用程序仅用于测试目的)。基本上,这意味着在任何时候,您都可以并行处理2个(而且只有2个) rails请求。设置可能比Apache+Passenger难一点,但绝对不难。我认为当你坚持使用256MB时,这是一个更好的解决方案。
https://stackoverflow.com/questions/4393598
复制相似问题