Pradinio serverio paleidimas naudojant „Fusion Passenger and Rails“

Norėdami eiti į „Fusion Passenger“ mikroautobusų juostą, įdiegėme tarpinį serverį mažai geležinkelio programai, kad galėtume ją patikrinti.

Iki šiol tai buvo labai malonu naudoti, todėl paprasta įdiegti / konfigūruoti ir diegti programas. Problema ta, kad svetainė, kurioje mes naudojame, nėra labai sunki ir, atrodo, uždaro serverius fone. Tai reiškia, kad kai kas nors eina į svetainę, jie labai ilgai laukia, kol jis pradės naują serverį užklausai apdoroti. Mes perskaitėme dokumentaciją, išbandėme keletą skirtingų nustatymų (Smart / Smart-Lv2 režimai, kelionės laikas ir tt) Ir vis dar neradome realaus sprendimo.

Pasibaigus „Google“ rezultatams negalime rasti naudingos informacijos. Šiuo metu mes turime cron užduotį, kuris kiekvieną kartą pateikia užklausą, kad serveriai veiktų.

Ar kas nors patiria šią problemą ir ar turite kokių nors pataisymų?

84
12 мая '09 в 18:57 2009-05-12 18:57 tsdbrown nustatytas gegužės 12 d., 09:18, 2009-05-12 18:57
@ 7 atsakymai

Kas atsitinka, tai, kad jūsų programa ir (arba) „ApplicationSpawners“ uždaromi dėl laiko. Norėdamas apdoroti naują prašymą, Keleivis turi paleisti naują jūsų paraiškos kopiją, kuri gali užtrukti kelias sekundes net greito įrenginio. Norėdami išspręsti problemą, yra keletas „Apache“ konfigūravimo parinkčių, kurias galite naudoti norėdami išsaugoti programą.

Būtent tai aš padariau savo serveriuose. „PassengerSpawnMethod“ ir „PassengerMaxPreloaderIdleTime“ nustatymai yra svarbiausi jūsų situacijos konfigūracijos nustatymai.

 # Speeds up spawn time tremendously -- if your app is compatible. # RMagick seems to be incompatible with smart spawning # Older versions of Passenger called this RailsSpawnMethod PassengerSpawnMethod smart # Keep the application instances alive longer. Default is 300 (seconds) PassengerPoolIdleTime 1000 # Keep the spawners alive, which speeds up spawning a new Application # listener after a period of inactivity at the expense of memory. # Older versions of Passenger called this RailsAppSpawnerIdleTime PassengerMaxPreloaderIdleTime 0 # Just in case you're leaking memory, restart a listener # after processing 5000 requests PassengerMaxRequests 5000 

Naudodamas „protingą“ neršto režimą ir išjungdamas „PassengerMaxPreloaderIdleTime“, keleivis visą laiką išsaugos 1 paraiškos kopiją (po pirmojo prašymo po „Apache“ paleidimo). Individualios Application klausytojai bus fork nuo šios kopijos, kuri yra super pigus darbas. Tai vyksta taip greitai, kad negalite pasakyti, ar jūsų paraiška buvo iškviesta klausytojui.

Jei jūsų paraiška nesuderinama su protingu nerštavimu, aš rekomenduoju laikyti didelį PassengerPoolIdleTime ir periodiškai spustelėti savo svetainę, naudodami garbanojimą, cronjob arba monitą, arba kažką, kas užtikrintų, kad klausytojas liktų gyvas.

Keleivių vadovas yra puiki nuoroda į šias ir kitas konfigūravimo parinktis.

redaguoti : jei jūsų paraiška nesuderinama su protingu nerštu, yra keletas naujų galimybių, kurios yra labai malonios.

 # Automatically hit your site when apache starts, so that you don't have to wait # for the first request for passenger to "spin up" your application. This even # helps when you have smart spawning enabled. PassengerPreStart http://myexample.com/ PassengerPreStart http://myexample2.com:3500/ # the minimum number of application instances that must be kept around whenever # the application is first accessed or after passenger cleans up idle instances # With this option, 3 application instances will ALWAYS be available after the # first request, even after passenger cleans up idle ones PassengerMinInstances 3 

Taigi, jei sujungsite „PassengerPreStart“ ir „PassengerMinInstances“, „Passenger“ iš karto po „apache“ atsisiunčia 3 egzempliorius ir visada turės bent 3 atvejus, todėl jūsų naudotojai retai (jei kada nors) matys vėlavimą.

Arba, jei jau naudojate protingą neršimą (rekomenduojama) naudodami „ PassengerMaxPreloaderIdleTime 0 , galite pridėti „ PassengerPreStart kad gautumėte papildomos naudos iš tiesioginio paleidimo.

Labai ačiū phusion.nl !

114
12 мая '09 в 19:11 2009-05-12 19:11 Atsakymą pateikė John Douthat gegužės 12 d. 09:19 val. 2009-05-12 19:11

Tiesiog įsitikinkite, kad „nginx“ serverio naudotojai suklupo ant šio klausimo, o direktyvos „PassengerMaxRequests“ ir „PassengerStatThrottleRate“ ne verčia į nginx. Tačiau kiti:

 rails_spawn_method smart; rails_app_spawner_idle_time 0; rails_framework_spawner_idle_time 0; passenger_pool_idle_time 1000; 

NTN!

rails_spawn_method keleivio 3 EDIT rails_spawn_method pasenęs

 passenger_spawn_method smart; 

visa kita yra gera.

38
24 февр. atsakymą pateikė Gav vasario 24 d. 2010-02-24 23:24 '10, 23:24, 2010-02-24 23:24

Taip pat galite naudoti „PassengerMinInstances“:

http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerMinInstances

Tai galima derinti su „PassengerPreStart“

4
16 февр. Josh atsakymas vasario 16 d 2011-02-16 02:07 '11 at 2:07 2011-02-16 02:07

RE:

 # Additionally keep a copy of the Rails framework in memory. If you're # using multiple apps on the same version of Rails, this will speed up # the creation of new RailsAppSpawners. This isn't necessary if you're # only running one or 2 applications, or if your applications use # different versions of Rails. RailsFrameworkSpawnerIdleTime 0 

Tiesiog pridėkite ką nors ir gali būti naudinga.

Numatytasis „smart-lv2“ versijos metodas, kurį praleidžia aplinkos kūrėjas, todėl nustatant rėmelio trukmės laiką, nebus jokio poveikio, jei aiškiai nustatysite nerimą prie protingo metodo.

Šaltinis: http://groups.google.com/group/phusion-passenger/browse_thread/thread/c21b8d17cdb073fd?pli=1

2
13 мая '09 в 10:25 2009-05-13 10:25 atsakymą įteikė Shuoling Liu gegužės 13 d. , 09:25, 2009-05-13 10:25

Aš taip pat turėjau šią problemą, bet negalėjau keisti keleivio nustatymų, nes neturėjau teisės rašyti į šį failą. Radau įrankį ( http://www.wekkars.com ), kuris padeda greitai reaguoti. Jis taip pat gali būti sprendimas jums.

1
13 марта '12 в 17:18 2012-03-13 17:18 atsakymas pateikiamas SteenhouwerD kovo 13 d., 12:18, 2012-03-13 17:18

Jei jūsų kompiuteris yra bendras serveris, kaip ir mano, negalite keisti nustatymų ir įstrigti su cron darbu.

1
13 мая '09 в 0:04 2009-05-13 00:04 atsakymą pateikė „ tim inman “ gegužės 13 d., 09:04 2009-05-13 00:04

patikrinkite keleivio versiją. tai buvo RailsSpawnMethod <string> senesnėms versijoms.

Tokiu atveju (jei aš teisingai prisimenu), pakeiskite keleivių bėgelius visose konfigūravimo direktyvose arba ieškokite senų dokumentų, kad sužinotumėte daugiau.

0
15 дек. JmJ atsakymas, pateiktas gruodžio 15 d. 2011-12-15 14:30 '11, 14:30, 2011-12-15 14:30

Kiti klausimai apie žymes arba Užduoti klausimą