Hi Jimmy, Rails was taking 5 minutes or so to start up on my Amazon Web Services machine. Actually, I was having a ton of troubles getting things all configured and as soon as I addressed one issue, two more would come up. I eventually had to abandon IronRuby for hosting my app.
There were a couple more issues I ran into, but you're right... on my dev machine, WEBrick started up much more quickly. Not sure what the problem was. Thanks, Martin On Mon, Sep 28, 2009 at 10:29 AM, Jimmy Schementi <jimmy.scheme...@microsoft.com> wrote: > What you're experiencing should not be anything specific to IIS6; the first > request of a IronRuby-based app is going to take a longer amount of time > because IronRuby.Rack is compiling and running all the non-app code (Camping > + other Ruby libraries, in your case). In other words, it's like your > starting the server on the first run. IIS7 defaults to 110 seconds for a > timeout, and I assume IIS6 has the same, which should be way more than enough > time to start the app; a basic Rails app takes ~15 seconds to start up on my > machine. How long does your app take to start outside of IIS? There should be > no difference whether your running in IIS or not. > ________________________________________ > From: ironruby-core-boun...@rubyforge.org > [ironruby-core-boun...@rubyforge.org] on behalf of Martin Smith > [martin.smith...@gmail.com] > Sent: Saturday, September 12, 2009 2:58 AM > To: ironruby-core@rubyforge.org > Subject: [Ironruby-core] IronRuby Rack Timeout causing issues at startup > > Hello, > > I wanted to let you know I was having all sorts of troubles getting > Rails to start reliably running on IIS6 (though I don't think IIS6 has > anything to do with it) and I had to increase the script timeout for > the very first load of the application. > > I changed HttpHandler to the one i've included below. I think the > locking is right, but has the side effect of possibly a few of the > early scripts getting a longer timeout than expected. That's probably > ok, but I'm not sure it's an "enterprise ready" solution. > > What do you guys think? Source included below. > > Thanks, > Martin > > --------------- begin -------------------- > internal sealed class HttpHandler : IHttpHandler { > > private readonly Stopwatch _watch = new Stopwatch(); > private static bool _isFirstRequest = true; // added this > > public bool IsReusable { > get { return true; } > } > > public void ProcessRequest(HttpContext context) { > lock (this) { > if (_isFirstRequest) // added this if block > { > context.Server.ScriptTimeout = 600; > _isFirstRequest = false; > } > > Utils.Log(""); > Utils.Log("=== Request started at " + DateTime.Now.ToString()); > _watch.Reset(); > _watch.Start(); > > Handler.IIS.Current.Handle(new Request(new > HttpRequestWrapper(context.Request)), > new Response(new > HttpResponseWrapper(context.Response))); > > _watch.Stop(); > Utils.Log(">>> Request finished (" + > _watch.ElapsedMilliseconds.ToString() + "ms)"); > } > } > } > > ------------- end -------------------------- > _______________________________________________ > Ironruby-core mailing list > Ironruby-core@rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core > > _______________________________________________ > Ironruby-core mailing list > Ironruby-core@rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core > _______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core