[erlang-questions] [ANN] misultin v0.7
Sun Apr 10 19:20:19 CEST 2011
On 04/10/2011 06:47 PM, Max Lapshin wrote:
> It seems to be an eternal process: new webserver which takes not 50
> microseconds, but 10 of them per request and is 5 times faster becomes
> the same mochiweb when it reaches it by functionality.
I disagree. Mochiweb is slower because of design issues, not because it
has more functionality. Most of the functionality in mochiweb that
hasn't been done in misultin or cowboy so far is either irrelevant
(json, globals, reloader) or aren't related to the GET method, which is
the prime target of benchmarks since it's the most used method by far.
This is of course not important for requests that will read from a
database, but it is very important for requests serving static or cached
content, since the data in memory can be sent directly to the client.
> And now I can tell, that there are some features, that are much more
> important that exact number of _micro_seconds per request: it is
> memory leakage.
> If erlang library is built without supervisors, if there are
> spawn_link's, you should know: 99% that it leaks memory.
That's why cowboy has an application supervisor handling listeners, each
of which count 3 supervisors: one for acceptors, one for requests, and
the third one supervising the supervisors.
> Stability is much more important than synthetic tests. And much, much
> more important is to include patches to upstream into erlang library
> so, that anyone will be able to say: erlang has excelent
> production-ready webserver out-of-the-box.
Stability is easy in Erlang, almost natural. Performance and design are
much more important to consider. Cowboy and the application stack that
we'll build on it will run on small clusters of commodity hardware,
allowing us to experiment with building various services without the
usual cost associated with clusters. The cheapest dedicated servers will
do (15 euros/month here). We also want a clean API (no pmods). And of
course, cowboy isn't really an HTTP server, it's a generic socket server
masquerading as an HTTP server.
I'm sure misultin and mochiweb also have good reasons for rolling their
own instead of using httpd or yaws.
More information about the erlang-questions