Re: [jruby-user] Which Rack web server?
Christian MICHON <[email protected]> Thu, 30 Apr 2015 08:10:44 +0200
| Newsgroups | gmane.comp.lang.jruby.user |
|---|---|
| Message-ID | <CACx2yF-QT3r01SnaWt-BJtx9EMMs2k=4vYHuYiTgx31hfEVf8w@mail.gmail.com> |
--001a11c3799ac4b14b0514eaf467 Content-Type: text/plain; charset=UTF-8 @Theo: A small correction is needed on this specific sentence: "Mizuno is the precursor to Fishwife, and it hasn't been updated in years" Mizuno had a new release 1 week ago and the last one before was less than 9 months ago... On Thu, Apr 30, 2015 at 8:00 AM, Theo Hultberg <[email protected]> wrote: > Our experience is that there doesn't exist a good, correct, performant > rack server for JRuby. We've used most of them, for two use cases: embedded > status APIs in long running applications and as the primary interface for > applications with a HTTP API. > > We package our applications as standalone JAR files with JRuby and all > gems, and run them with `java -jar ...`, and this rules our some of the > options. Either because some servers just don't work when run that way > because they assume they will be able to muck about with the file system > any way they like, or because they need to be in control, they need to be > the container of the application. > > These are the servers we've tried, and our experience. If your use case is > different, for example serving Rails apps, this may not be your experience: > > * Fishwife is the only one we've found that doesn't have significant bugs > and can be embedded. It's not perfect, but it works well for us. > > * Mizuno is the precursor to Fishwife, and it hasn't been updated in years. > > * Puma is nice and I'd really like to use it, but the error handling is > buggy. It has often filled up disks with error messages. I think the worst > of this has been fixed, but in our experience it doesn't handle connection > errors very well. We stay well away from Puma. > > * Jubilee showed some great promise but then development stopped. We > haven't tried the last released version, but the last version we tried had > significant bugs around request body handling. > > * rack-jetty was abandoned several years ago and doesn't handle request > bodies over 4 KiB. > > * I'm not aware of any major bugs in Trinidad, but it doesn't work when > embedded. > > * Torquebox is also not embeddable, and version 4 is starting to feel like > vaporware. > > * WEBrick works surprisingly well for status APIs that don't get called > very often. > > As I said, our use case is very different from serving a Rails > application, so your experience will probably be different. > > T# > > On Wed, Apr 29, 2015 at 12:04 AM, Benjamin Ortega <[email protected]> > wrote: > >> We use Trinidad (multithreaded) and are satisfied with it. It's fast >> enough and it scales and can be monitored nicely. We use Passenger for MRI >> apps and have considered standardizing on Passenger or puma for everything, >> but don't have any specific plans to do so. >> >> FWIW I think you have to buy Passenger Enterprise to run your app >> multithreaded on Passenger. >> >> On Tue, Apr 28, 2015 at 4:34 PM, Christian MICHON < >> [email protected]> wrote: >> >>> Mizuno (jetty). >>> - fastest from what I measured with apache-bench on my machines >>> - simplest configuration (almost none) >>> >>> Only drawback: CTRL-C does not work well on Windows (the java process >>> will be detached and will keep running), you might need to implement a >>> shutdown hook in your app. >>> >>> On Mon, Apr 27, 2015 at 9:29 PM, Doug Hathaway <[email protected]> >>> wrote: >>> >>>> Tomcat deployed via Warbler. >>>> >>>> On Mon, Apr 27, 2015 at 12:55 PM, John Joseph Bachir < >>>> [email protected]> wrote: >>>> >>>>> Which Rack web server are folks using with JRuby? Any particularly bad >>>>> or good experiences? >>>>> >>>>> I suppose the only ones that support threading are Puma and Passenger? >>>>> >>>> >>>> >>>> >>>> -- >>>> *Doug Hathaway* >>>> http://www.dadesystems.com/ >>>> [email protected] >>>> (407) 680-3631 >>>> >>> >>> >>> >>> -- >>> Christian >>> >> >> > -- Christian --001a11c3799ac4b14b0514eaf467 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">@Theo:<div><br></div><div>A small correction is needed on = this specific sentence: "<span style=3D"font-size:12.8000001907349px">= Mizuno is the precursor to Fishwife, and it hasn't been updated in year= s"</span><div><span style=3D"font-size:12.8000001907349px"><br></span>= </div><div><span style=3D"font-size:12.8000001907349px">Mizuno had a new re= lease 1 week ago and the last one before was less than 9 months ago...<br><= /span><div><br></div></div></div></div><div class=3D"gmail_extra"><br><div = class=3D"gmail_quote">On Thu, Apr 30, 2015 at 8:00 AM, Theo Hultberg <span = dir=3D"ltr"><<a href=3D"mailto:[email protected]" target=3D"_blank">theo@= iconara.net</a>></span> wrote:<br><blockquote class=3D"gmail_quote" styl= e=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div di= r=3D"ltr"><div>Our experience is that there doesn't exist a good, corre= ct, performant rack server for JRuby. We've used most of them, for two = use cases: embedded status APIs in long running applications and as the pri= mary interface for applications with a HTTP API.</div><div><br></div><div>W= e package our applications as standalone JAR files with JRuby and all gems,= and run them with `java -jar ...`, and this rules our some of the options.= Either because some servers just don't work when run that way because = they assume they will be able to muck about with the file system any way th= ey like, or because they need to be in control, they need to be the contain= er of the application.</div><div><br></div><div>These are the servers we= 9;ve tried, and our experience. If your use case is different, for example = serving Rails apps, this may not be your experience:</div><div><br></div>* = Fishwife is the only one we've found that doesn't have significant = bugs and can be embedded. It's not perfect, but it works well for us.<d= iv><br></div><div>* Mizuno is the precursor to Fishwife, and it hasn't = been updated in years.<br><div><br></div><div>* Puma is nice and I'd re= ally like to use it, but the error handling is buggy. It has often filled u= p disks with error messages. I think the worst of this has been fixed, but = in our experience it doesn't handle connection errors very well. We sta= y well away from Puma.</div><div><br></div><div>* Jubilee showed some great= promise but then development stopped. We haven't tried the last releas= ed version, but the last version we tried had significant bugs around reque= st body handling.</div><div><br></div><div>* rack-jetty was abandoned sever= al years ago and doesn't handle request bodies over 4 KiB.</div><div><b= r></div><div>* I'm not aware of any major bugs in Trinidad, but it does= n't work when embedded.</div><div><br></div><div>* Torquebox is also no= t embeddable, and version 4 is starting to feel like vaporware.</div><div><= br></div><div>* WEBrick works surprisingly well for status APIs that don= 9;t get called very often.</div><div><br></div><div>As I said, our use case= is very different from serving a Rails application, so your experience wil= l probably be different.</div><span class=3D"HOEnZb"><font color=3D"#888888= "><div><br></div><div>T#</div></font></span></div></div><div class=3D"HOEnZ= b"><div class=3D"h5"><div class=3D"gmail_extra"><br><div class=3D"gmail_quo= te">On Wed, Apr 29, 2015 at 12:04 AM, Benjamin Ortega <span dir=3D"ltr"><= ;<a href=3D"mailto:[email protected]" target=3D"_blank">ben.ortega@gmail= .com</a>></span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"ma= rgin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"lt= r">We use Trinidad (multithreaded) and are satisfied with it. It's fast= enough and it scales and can be monitored nicely. We use Passenger for MRI= apps and have considered standardizing on Passenger or puma for everything= , but don't have any specific plans to do so.<div><br><div><div><div>FW= IW I think you have to buy Passenger Enterprise to run your app multithread= ed on Passenger.</div></div></div></div></div><div><div><div class=3D"gmail= _extra"><br><div class=3D"gmail_quote">On Tue, Apr 28, 2015 at 4:34 PM, Chr= istian MICHON <span dir=3D"ltr"><<a href=3D"mailto:christian.michon@gmai= l.com" target=3D"_blank">[email protected]</a>></span> wrote:<b= r><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:= 1px #ccc solid;padding-left:1ex"><div dir=3D"ltr">Mizuno (jetty).<div>- fas= test from what I measured with apache-bench on my machines</div><div>- simp= lest configuration (almost none)</div><div><br></div><div>Only drawback: CT= RL-C does not work well on Windows (the java process will be detached and w= ill keep running), you might need to implement a shutdown hook in your app.= </div></div><div class=3D"gmail_extra"><div><div><br><div class=3D"gmail_qu= ote">On Mon, Apr 27, 2015 at 9:29 PM, Doug Hathaway <span dir=3D"ltr"><<= a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</= a>></span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0= 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr">Tom= cat deployed via Warbler.</div><div class=3D"gmail_extra"><span><br><div cl= ass=3D"gmail_quote">On Mon, Apr 27, 2015 at 12:55 PM, John Joseph Bachir <s= pan dir=3D"ltr"><<a href=3D"mailto:[email protected]" target=3D= "_blank">[email protected]</a>></span> wrote:<br><blockquote cl= ass=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;p= adding-left:1ex"><div dir=3D"ltr">Which Rack web server are folks using wit= h JRuby? Any particularly bad or good experiences?<div><br></div><div>I sup= pose the only ones that support threading are Puma and Passenger?</div></di= v> </blockquote></div><br><br clear=3D"all"><div><br></div></span><span><font = color=3D"#888888">-- <br><div><div dir=3D"ltr"><b>Doug Hathaway</b><div><a = href=3D"http://www.dadesystems.com/" target=3D"_blank">http://www.dadesyste= ms.com/</a></div><div><a href=3D"mailto:[email protected]" target=3D"_bl= ank">[email protected]</a><br><a href=3D"tel:%28407%29%20680-3631" value= =3D"+14076803631" target=3D"_blank">(407) 680-3631</a><br></div></div></div= > </font></span></div> </blockquote></div><br><br clear=3D"all"><div><br></div></div></div><span><= font color=3D"#888888">-- <br><div>Christian<br></div> </font></span></div> </blockquote></div><br></div> </div></div></blockquote></div><br></div> </div></div></blockquote></div><br><br clear=3D"all"><div><br></div>-- <br>= <div class=3D"gmail_signature">Christian<br></div> </div> --001a11c3799ac4b14b0514eaf467--