I have seen around in open source and private web server projects claims to be faster than others.. which is fun, a web server measure should include memory, CPU, scalability, I/O, etc. There’s no perfect web server for all needs that’s why you cannot be always faster than others…
Would be great that someone could host a web server contest (yearly maybe?) where the projects can participate and someone neutral can measure each one under similar setup, conditions and network environment. Goals ?, make public who does better on which area, with this info would be easily for sysadmins to take better decisions of which web server use versus the business requirements. Also this will motivate to each project to improve the areas that need more work.
I can imagine that after a contest, all of us who develop web servers will start thinking in more innovate ways to improve the performance and maybe propose best architectures for the web.
Who should participate at least ?: Apache foundation, Nginx, Lighttpd, Cherokee, Hiawata, G-Wan, Litespeed, Monkey etc…
If anyone is interested into a web server contest, i can share more ideas and vision about how it should be.
As usual we have been working in the next version of Monkey, we are delivering a lot of improvements in terms of performance, scheduler fixes, decreased memory usage, stable plugins for authentication and scripting support, new security model based on network ranges and many more things, more details will come with the official announcement.
i have been surprised that many people from different places has joined to the IRC channel to get some support and know a little bit more about the project, a couple of them are there daily and the best thing is that they are providing patches and suggesting improvements, and that’s is really cool. The project visibility is growing and that’s terrific but also means more work
Remembering the Monkey life cycle, when 0.9.x was around, it used to have a common networking model “1 thread per client”, in 0.10 we rework almost everything to have a model with fixed threads and asynchronous sockets, in 0.11 we introduced a simple API for plugins, a new configuration mechanism based on indented text plus performance improvements and scripting support. In 0.12 arrived SSL and changed the internal mechanism to handle linked lists (Linux Kernel style). In 0.13 series has been fixes and performance improvements… and now ? what’s next ? 0.13.3 ?, 0.14 ?.. the answer is NO, we will jump directly to Monkey 0.20. The 0.1x series has ended, this new cycle brings a more mature project and we are ready to go for more.
Monkey 0.20 codename is “Maduro Frito con queso” (fried mature banana with cheese), check how it looks:

Picture taken in Guayaquil - Ecuador, strong food before to get drunk
So that’s all for now, we will keep you posted !
Oracle have a huge commitment into the Linux Kernel project, nowadays we can find a lot of projects which are merged into mainline and are a benefit for the community, a few of them are:
- OCFS2: Oracle Cluster File System (for generic use)
- ASMLib: Automatic Storage Management feature of the Oracle Database
- RDS: Allows multiple reliable datagram socket operations between two nodes to share a single connection-oriented connection
- BTRFS: New scalable file system focusing on fault tolerance, repair and easy administration.
- A full list at http://oss.oracle.com
Part of this commitment, is also the improvement of the Virtualisation technology inside the Kernel. Oracle provides a full Virtualisation infrastructure based on Xen and a user space software stack for it’s management. I would invite you to read this interesting blog post from Wim Coekaerts about two new features already available into the mainline Kernel which are making the VM stack rock:
Another feature hit Mainline Linux: CleanCache / transcendent memory
This has been a really busy time… i have new roles in my life which makes me feel really excited, my daughter is about four months now (she’s so lovely!), this Sunday i’m getting 6 years together with my wife (two married but i like to count since the beginning), almost one year in my new Oracle work team “Linux Support engineering“, hacking my Monkey and near of the 0.14.0 release, wasting few minutes playing Angry Bird for Chrome (grr i cannot stop playing!), studying Linux Kernel Development for my own and just started to do some minor Linux Kernel patches.
All this requires to optimize the time (yes, Angry bird is not the best example) and balance daily activities… it’s a difficult task but possible
[UPDATE May 25, 2011]
My first two minor patches for Kernel Kbuild (gconfig) are going to mainline: https://lkml.org/lkml/2011/5/25/417, yay!
Monkey Project team is looking for companies and individuals who requires a really fast and lightweight HTTP server for their products. Our solution is based in open source technologies delivering a high quality product supported by our community as well the main core developers.
Monkey provides an extensible HTTP framework for your needs, we are very careful about performance and low resources usage. On every release we perform a strong QA and different tests to assure backward compatibility.
Here is a list of a few reasons about why Monkey is the right choice:
- Binary size is 55KB
- Event driven oriented (asynchronous with fixed threads)
- HTTP/1.1 compliant
- Built on top of Linux 2.6 features (specific Linux syscalls dependent)
- Plugins support: fully modular, extensible through the C API
- Indented configuration mode (configuration for human beings)
- CGI supported through our Palm protocol server implementation
Monkey has been tested in the following devices:
- Gumstix boards
- Beagleboard
- Android based phones/tablets
- Laptop/PC
If you need to integrate a strong and lightweight web server in your Linux Software stack, evaluate Monkey and let us know about it, we are able to help you out in the process.
Dear Reader,
Oracle Chile is looking for Linux Support engineers, this is a great opportunity, if you are interested please send me your resume
One thing is clear: you can improve everything!. We have been doing some cool improvements in Monkey internals, our next release will rock more than usual, 0.14.0 is very promising in terms of speed and low resources usage.
I would like to put here just a simple example, after analyzing each HTTP cycle of our server, we found a couple of parts of the architecture where some functions were not so fast as we though (that’s the problem.. we though
), so after put our hands on we have some results. The following new improvement case take place in one function which perform string search with string limits, let’s take a close look to the original diagram:
Diagram generated with valgrind + kcachegrind,
5000 request performed with apache benchmark (ab)
If you click in the image, you will realize that function mk_string_search_n() used to be 64.91% of parent function mk_http_init(), so there was something wrong, after analyze the code we decide to rewrite the old function and do some magic with string limits, after a while here is the result:

So we have improved the function performance, decreasing it’s computing time from 64.91% to 7.11%, obviously this means less CPU usage + more requests per second = better performance. If you are curious, you can find the patch here.
This is not all, also we have also merged new patches to decrease memory allocation per request, better hostname matching and small internal changes… as I said.. Monkey 0.14.0 will rock!
Source
http://blog.monkey-project.com/2011/04/08/more-performance-improvements-underway/
An open source project does not exists without somebody behind it, i’m not talking about a simple ‘developer’ pushing code to some repository, i am talking about people around which have something in common and work together with the same objective in mind. For me, people around (no matters the level of compromise) is part of a community. Someones share some time in the chat to talk about the project, others send suggestions, others just look to see what’s going on, others helps with documentation… too many roles, the human being needs to live and work in society, the Monkeys too

Encuentro Linux 2010 - Chile
When I say that Monkey Project is open, i am not just referring to the source code with a license file… that is the easy part, the hard part is to continue being an open community, where new people can join and be listened, share ideas, discuss and have fun. People motivated usually made great things and be motivated in community is even better…
The Monkey team invite the new people around to be part of this community, join to the chat, let us know your concerns, let’s get some beers, whatever you want… we promote the Community as the basics for this project… is our KEY
I’ve started to write a simple plugin for Monkey HTTP Daemon which will perform the HTTP Basic Authentication, i had to deal finding simple functions to perform Base64 and SHA1 encryption without use external dependencies such as OpenSSL or similars. Finally after waste my time with some buggy SHA1 functions, i got the implementation written by Linus Torvalds for GIT project.
My test cases are working as expected, so i’m placing a tarball with the code and examples, feel free to to use it in your open projects:
http://monkey-project.com/~edsiper/misc/sha1_b64.tar.gz
- download the tarball
- tar zxfv sha1_b64.tar.gz
- cd sha1_b64/
- make
- ./example
- php example.php
happy encryption