Ebb web server version 0.0.3

Ebb aims to be a small and fast web server, written in C, specifically for hosting web frameworks like Rails and Merb.

It is not meant to be a full featured web server like Lighttpd, Apache, or Nginx. Rather it should be used in multiplicity behind a load balancer and a front-end server. It is not meant to serve static files in production.

Because Ebb is written in C, other language bindings can be added to make it useful to Non-Ruby frameworks. For example, a Python WSGI interface is forthcoming.



for downloads and more information. Please note that Ebb depends on having Glib installed.

Release 0.0.3 includes many bug fixes that were encountered after the first release. Mostly related installation and the ebb_rails executable.

If you have problems, please send me a bug report:)


I don't know if it's a bug, but I've found that Ebb uses much more memory than Mongrel or Thin. This is my application's memory usage after 1000 requests (on my Mac, I've yet to test it on other systems):

Ebb: RSIZE=35M, VSIZE=258M (started at 255M right after launch) Thin: RSIZE=31M, VSIZE=47M Mongrel: RSIZE=33M, VSIZE=49M

what puzzles me is the abnormal VSIZE value for Ebb...


Just a few clarifications to prevent any confusion as to what's written on your website:

First: EventMachine is not a ruby binding to libevent. EM is a reactor-based network communication library. See it as Twisted Python for Ruby. EM doesn't even use libev / libevent underneath because of cross-platform compatibility concerns.

Second: EventMachine is a Ruby extension written in C++ (and being ported over to C). There is a pure ruby version of it as well, but that's for those who don't want to deal with extensions and of course don't need the speed of C++. I put this because the page seems to make the assumption that EM is written purely in Ruby.


That's correct! No, that would be not optimal. In ebb.c I've been playing with larger buffer-sizes and concurrent clients- apparently that wasn't reset in the release!

#define EBB_BUFFERSIZE (1024 * (80 + 32) * 2) #define EBB_MAX_CLIENTS 950

That would make EBB_BUFFERSIZE * EBB_MAX_CLIENTS = 217907200 bytes = 207.8 megabytes.

Try something more reasonable for those values. E.G.

#define EBB_BUFFERSIZE (1024 * 120) #define EBB_MAX_CLIENTS 200

I will bring down these values in the next release.

Thanks, ry

Hi Jason,

Thank you for the correction. I'm not sure why I was under this impression - I'll update the site.