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: &quot;<span style=3D"font-size:12.8000001907349px">=
Mizuno is the precursor to Fishwife, and it hasn&#39;t been updated in year=
s&quot;</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">&lt;<a href=3D"mailto:[email protected]" target=3D"_blank">theo@=
iconara.net</a>&gt;</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&#39;t exist a good, corre=
ct, performant rack server for JRuby. We&#39;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&#39;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&#3=
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&#39;ve found that doesn&#39;t have significant =
bugs and can be embedded. It&#39;s not perfect, but it works well for us.<d=
iv><br></div><div>* Mizuno is the precursor to Fishwife, and it hasn&#39;t =
been updated in years.<br><div><br></div><div>* Puma is nice and I&#39;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&#39;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&#39;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&#39;t handle request bodies over 4 KiB.</div><div><b=
r></div><div>* I&#39;m not aware of any major bugs in Trinidad, but it does=
n&#39;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&#3=
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">&lt=
;<a href=3D"mailto:[email protected]" target=3D"_blank">ben.ortega@gmail=
.com</a>&gt;</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&#39;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&#39;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">&lt;<a href=3D"mailto:christian.michon@gmai=
l.com" target=3D"_blank">[email protected]</a>&gt;</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">&lt;<=
a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</=
a>&gt;</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">&lt;<a href=3D"mailto:[email protected]" target=3D=
"_blank">[email protected]</a>&gt;</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--