About

Insights of Monkey

About Monkey

Monkey is a lightweight and scalable Web Server. Originally made for Linux, it's also compatible with OSX. It have been designed with a strong focus on Embedded devices, therefore its scalable by nature having a low memory and CPU consumption, making it a real solution for high end production servers too.

Monkey is built and tested for different architectures such as ARM, x86 and x64.

Features

The following is a list of some features available on Monkey, for more details about all things available please refer to the official documentation:

  • HTTP/1.1 compliant
  • Event-driven plus a fixed threading model
  • IPv4 & IPv6
  • Virtual Hosts
  • Indented configuration
  • Plugins Support, static or dynamic
  • C API Interface
  • Other features through base plugins:
    • SSL/TLS
    • CGI
    • FastCGI
    • Security
    • Log writter
    • Directory Listing
    • Shell: Command line

Internals

Monkey uses an hybrid mechanism composed by a fixed number of threads being each one capable to attend thousands of clients thanks to the event-driven model based in asyncrhonous sockets.

The interaction between the scheduler and each worker thread is lock free, avoiding race conditions and exposing a huge performance compared to other available options. It also takes the most of the Linux Kernel to optimize the work using specific system calls based on zero-copy strategy.

Plugins

A good and flexible architecture is one of our goals. Monkey have been designed to keep most of the HTTP functionalities in the core and make it extensible through external plugins. Its core is small, depending of the compiler version used, the size of the runtime can be ~300KB. The current plugins are distributed with the sources:

  • SSL/TLS
  • CGI: Common Gateway Interface
  • FastCGI: Fast CGI
  • Liana: networking communication layer
  • Cheetah! Shell: Yes!, Monkey has a shell!
  • Directory Listing
  • Security: access restriction to the service by network address, subnets and request filters

Optimized for Linux but compatible

Monkey was originally written with a strong focus on Linux and due to the received support we have been able to expanded our efforts to make it compatible with OSX and BSD.

Sponsors

Monkey project is sponsored by it main authors, contributors and the following entities who are actively supporting it development:

License

Monkey Server is under the tems of the Apache License v2.0. For any extra requirement or inquiry please write us to eduardo at monkey.io .

Logo & Copyright

All Monkey logos and banners are Copyrighted by Eduardo Silva.