Почему Rails и Passenger пожирают мою память? - PullRequest
0 голосов
/ 19 июня 2009

Я использую Slicehost на 256 и использую Apache и Passenger для размещения моего приложения на Rails. Мне приходилось часто делать Hard-Reboot. Когда я посмотрел на эту статистику Пассажирской памяти.

--------- 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

Видя размеры жирным шрифтом, почему он так сильно поглощает память?

Ответы [ 5 ]

4 голосов
/ 21 августа 2009

Это не занимает много памяти ... колонка, на которую нужно обратить внимание, помечена как "приватная".
Если вы сложите их все (и это снизу), вы увидите, что пассажир и связанные с ним процессы занимают только 86 МБ памяти. Большая часть этого также зависит от размера вашего приложения (76 МБ).

Возможно, вам потребуется сообщить нам, что еще вы используете на сервере ... установите htop и сортируйте по памяти, чтобы получить представление.

4 голосов
/ 19 июня 2009

Не могу сказать точно, основываясь только на этой статистике.

Но чтобы помочь понизить его:

  • Используйте Nginx поверх Apache
  • Используйте Ruby Enterprise Edition - похоже, вы просто используете обычную 1.8.6 / 7 ... это потраченная впустую память прямо сейчас

Кроме того, у вас есть много гемов и / или плагинов в вашем приложении?

0 голосов
/ 25 августа 2009

Вы настроили Apache или настройки вашей базы данных? Я обнаружил, что блог Wordpress + небольшое приложение Rails слишком много для среза 256 МБ со стандартными конфигурациями 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. Я имел обыкновение получать 2-3 сообщения с предупреждением о свопинге в неделю от Slicehost, но я не получал их в течение 2 недель с тех пор, как переключил свой настройки. Если вы используете разветвление WorkerMPM, ваши настройки будут другими.

Если вы используете MySQL, отключите таблицы InnoDB, если вы не используете InnoDB. Это может сэкономить вам немного памяти.

0 голосов
/ 25 августа 2009

Если вы работаете в 64-битной среде, попробуйте перейти на 32-битную. Rails / Ruby обычно используют меньше памяти в 32-битной среде.

0 голосов
/ 19 июня 2009

Вам нужно сделать профилирование памяти .

...