Ruby má pod Apache2 velkou spotřebu paměti

Ruby má pod Apache2 velkou spotřebu paměti
« kdy: 08. 04. 2010, 09:46:48 »
Zdravím,
rozbíhám webový server a narážím na zajímavé problémy. Když ho nechám vyřídít celkem malé množství požadavků (milion), tak si Ruby vezmě nějakých 70% paměti.
Je to v pořádku?
Když bych chtěl nějak řešit tenhle problém, bude to v nastavení apache, nebo rubyho?

S práním pěkného dne
Honza Kadera
« Poslední změna: 08. 04. 2010, 10:04:11 od Petr Krčmář »


David Strejc

Re: Ruby má pod Apache2 velkou spotřebu paměti
« Odpověď #1 kdy: 08. 04. 2010, 12:57:23 »
Jak ruby poustite?

Jedna se o aplikaci v RoR - tam bych doporucoval pouzivat apache jako proxy a aplikaci servit pomoci mongrelu.

Re: Ruby má pod Apache2 velkou spotřebu paměti
« Odpověď #2 kdy: 08. 04. 2010, 15:35:17 »
Mám ruby v1.8.6 (2007-03-13 patchlevel 0) [i686-linux]
ano, je to v RoR
A Mongrel se domnívám také používám.

Spouším v rámci RoR aplikace příkazem 'ruby script/server' a hlásí to že bootuje mongrel.

Dotazy na ten stroj pouštím po kabelu z druhého počítače, abych měl jistotu, že nezůstávám zabržděný kvůli nějakému síťovému provozu.

Nicméně, když použiji příkaz top, tak ten píše, že paměť žere ruby

David Strejc

Re: Ruby má pod Apache2 velkou spotřebu paměti
« Odpověď #3 kdy: 08. 04. 2010, 16:21:52 »
Nejlepsi je si to nakreslit, abyste pochopil co a jak a kdo v requestu vykonava.

Mongrel se spusti v defaultu na portu 3000. Muzete to ovlivnit prepinaci pro start mongrel serveru. Musite byt root abyste mohl spoustet aplikaci na privilegovanych portech (do 1024).

Muzete vyuzit apache k tomu, aby pozadavky, ktere chodi na port 80 predaval na mongrel bezici na jinem portu. Takto se resi virtualni hostingy, kdy potrebujete mit vic nez jednu RoR aplikaci na jednom stroji. Pak pres NameVirtualHost a ProxyPass a ProxyPassReverse (dokumentace apache) predavate pozadavky na jednotlive VirtualHosty prislusnym Mongrel serverum.

Ano - Ruby on Rails mi po spusteni bere cca 30M az 70M pameti (Redmine), ale nejak zasadne se v case tato hodnota nemeni.

Re: Ruby má pod Apache2 velkou spotřebu paměti
« Odpověď #4 kdy: 08. 04. 2010, 17:25:59 »
Omlouvám se, ale to co se snažíte říct je něco jako: Nejde to udělat nijak jednoduše. Je to tak?


Ahmul

Re: Ruby má pod Apache2 velkou spotřebu paměti
« Odpověď #5 kdy: 08. 04. 2010, 17:41:02 »
RoR pod apache, jedině přes passenger http://www.modrails.com/ :) Má to v sobě i upravený intepretr právě kvůli paměti, takže ve výsledku se celkově aplikace chová líp. Pokud se to zkombinuje s apache mpm-worker, tak to šlape jako hodinky:)

Testuješ to v production nebo development? Production má standardně zapnuto cachování do paměti. Kolik je "70% paměti" v absolutních číslech?
« Poslední změna: 08. 04. 2010, 17:45:58 od Ahmul »

Re: Ruby má pod Apache2 velkou spotřebu paměti
« Odpověď #6 kdy: 08. 04. 2010, 18:10:09 »
Prosím Vás, nechci si nevážit Vašich rad, ale jak rozchodit zkompilovane ruby, rails, gemy a síť tak, aby se mi zobrazovali stranky z toho serveru na jiném počítači alespoň v lokální síťi mi trvalo rok a půl, proto se ptám, jestli tomu jde nějak říct "Vem si jenom tolik paměti" tak jak to stojí v tuhle chvíli.

Já to asi netestuju (nevím, co je pro Vás obrat a co odborný výraz) mám to jenom puštěné a nic jsem nenastavoval, myslím si, že funguji v režimu development (dělal jsem k tomu nějakou databazi, ktera se jmenuje library_development podle návodu)

a 70% paměti v absolutních číslech je 70% z 1Gb. V tuhle chvíli má ruby 94.7% pamětí a třetinu swapu

Re: Ruby má pod Apache2 velkou spotřebu paměti
« Odpověď #7 kdy: 09. 04. 2010, 14:52:14 »
Zkusil jsem nainstalovat ten passenger...dostal jsem se ke zvláštní chybě.
Hlásí mi to, že nemám nainstalované openssl.

Openssl nainstalované mám a taky všechny ty devel knihovny, co se tam daly najít, stejně tak jako všechny, které měli něco společného s rubym.

Zvláštní na tom je, že poté, co jsem nainstaloval gem a pomocí něho rails...vygeneroval jsem si aplikaci a zkoušel spustit script/generate, tak mi to taky napsalo, že nemám openssl...ale já ho mám, setkali jste se někdo s něčím podobným?