我正在使用256片Slicehost并运行Apache和Passenger来托管我的Rails应用程序。 我不得不经常进行硬重启。当我看到这个乘客记忆统计数据时。
--------- Passenger processes ---------
** [out :: welcometonewnepal.com] PID Threads VMSize Private Name
** [out :: welcometonewnepal.com] ---------------------------------------
** [out :: welcometonewnepal.com] 8246 11 <b>84.1 MB 0.1 MB /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/ApplicationPoolServerExecutable</b> 0 /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2/bin/passenger-spawn-server /usr/bin/ruby1.8 /tmp/passenger.4217
** [out :: welcometonewnepal.com] 8247 2 <b>57.1 MB 0.2 MB Passenger spawn server</b>
** [out :: welcometonewnepal.com] 8903 1 <b>185.6 MB 9.6 MB Passenger ApplicationSpawner:</b> /home/deploy/rails_apps/welcometonewnepal/production/current
** [out :: welcometonewnepal.com] 9065 1 <b>195.1 MB 76.6 MB Rails:</b> /home/deploy/rails_apps/welcometonewnepal/production/current
** [out :: welcometonewnepal.com] ### Processes: 4
** [out :: welcometonewnepal.com] ### Total private dirty RSS: 86.43 MB
看到粗体大小,为什么它会如此耗费记忆?
答案 0 :(得分:4)
根据这些统计数据不能肯定地说。
但要帮助降低它:
此外,您的应用中是否有很多宝石和/或插件?
答案 1 :(得分:4)
它没有占用那么多记忆......你需要注意的那一栏是标有“私人”的栏目 如果将它们全部添加(并且它在底部),您将看到乘客及其相关进程仅占用86MB内存。其中大部分也被应用程序的大小占用(76MB)。
您可能需要告诉我们您在服务器上运行的其他内容...安装htop并按内存排序以获得想法。
答案 2 :(得分:0)
你需要做一些memory profiling。
答案 3 :(得分:0)
如果您在64位环境中运行,请尝试切换到32位。 Rails / Ruby倾向于在32位环境中使用更少的内存。
答案 4 :(得分:0)
您是否已调整Apache或数据库设置?我发现一个Wordpress博客+一个小的Rails应用程序对于256MB切片使用默认的Ubuntu配置太多了。
在Apache(Prefork MPM)中尝试以下设置:
#KeepAlive On
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 4
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 40
MaxRequestsPerChild 1
</IfModule>
在我的情况下,我不得不将MaxClients进一步调低到25.我曾经每周从Slicehost获得2-3封交换警告电子邮件,但是自从我切换后我在2周内没有收到任何电子邮件。设置。如果您使用的是WorkerMPM分支,则您的设置将有所不同。
如果您使用的是MySQL,请在不使用InnoDB的情况下禁用InnoDB表。这可以为你节省相当多的内存。