Pretty cool stuff Dave. Why is the performance better for high TPS for
ejbd over http/jetty? As the no of clients increases does the TPS
decrease for ejbd over raw socket?

Regards
Manu

On Mon, Jul 14, 2008 at 3:18 AM, David Blevins <[EMAIL PROTECTED]> wrote:
> We've had more than one report of windows users running into performance
> issues with the way we manage sockets between the client and server.
>  Typically they run out of ports, etc.  A bit back Dain got The Grinder[1]
> running and showed me how good the performance was when we dropped in Jetty
> and ran our ejbd protocol over http.  On my machine with a simple ejb, 2
> processes, 10 threads each (i.e. 20 threads totoal), I was getting about
> 2500 TPS (transactions per second) over jetty+http+ejbd.  That was several
> times our raw ejbd performance which would start at around 600-700 TPS and
> taper off after a few hours to next to nothing.
>
> I looked into how much of the Jetty code we'd need to run that setup all the
> time and it was around 240K so I decided to give improving our raw socket +
> ejbd setup another go and read up on NIO and all that business.  I added
> some keep-alive logic, buffering, eliminated some flushing, and introduced
> another thread to check for and close connections being kept alive in the
> "waiting for request" state too long (3 second cut off currently).
>
> Here's the performance we're getting now:
>
>  http://people.apache.org/~dblevins/ejbd-client-performance.png
>
> The number to look at is the mean, which is 7300 TPS.  I kicked this off
> yesterday and it's been running pretty consistently at that number for about
> 21 hours now.  It actually starts at about 7200 TPS and goes up just
> slightly, perhaps because of vm hotspotting, though not too sure.
>
> Anyway this should eliminate any performance issues someone might have seen
> before with heavily active remote clients.  It's not yet using NIO.  I'd
> like to try it out, but might keep that for next release.
>
> There are still good performance related reasons to use the ejbd over
> http/jetty setup.  Here's the basic trade off:
>
>  - ejbd over raw socket:
>   - high TPS with lower number of active clients (hundred or so vms)
>   - low TPS with larger number of active clients (more than a hundred or so)
>
>  - ejbd over http/jetty:
>   - low TPS with lower number of active clients (less than a hundred)
>   - high TPS with larger number of active clients (hundreds or thousands)
>
> Note that client doesn't mean threads, it means actual VMs.  You can have
> several client threads going with pretty much no impact.
>
> -David
>
> [1] http://grinder.sourceforge.net/
>

Reply via email to