Tuesday, January 31st, 2006

Apache MPM event module

Category: Editorial

<p>A new experimental module has been created over at Apache. This module, Apache MPM event, is “an experimental variant of the standard worker MPM”.

This module has the potential to bring Twisted-esque functionality within the Apache pipeline.

Summary

The event Multi-Processing Module (MPM) is designed to allow more requests to be served simultaneously by passing off some processing work to supporting threads, freeing up the main threads to work on new requests. It is based on the worker MPM, which implements a hybrid multi-process multi-threaded server. Run-time configuration directives are identical to those provided by worker.

How it works

This MPM tries to fix the ‘keep alive problem’ in HTTP. After a client completes the first request, the client can keep the connection open, and send further requests using the same socket. This can save signifigant overhead in creating TCP connections. However, Apache traditionally keeps an entire child process/thread waiting for data from the client, which brings its own disadvantages. To solve this problem, this MPM uses a dedicated thread to handle both the Listening sockets, and all sockets that are in a Keep Alive state.

The MPM assumes that the underlying apr_pollset implementation is reasonably threadsafe. This enables the MPM to avoid excessive high level locking, or having to wake up the listener thread in order to send it a keep-alive socket. This is currently only compatible with KQueue and EPoll.

Bye bye polling.

Related Content:

Posted by Dion Almaer at 9:48 am
1 Comment

++++-
4.3 rating from 14 votes

1 Comment »

Comments feed TrackBack URI

This can save signifigant overhead in creating TCP connections. However, Apache traditionally keeps an entire child process/thread waiting for data from the client, which brings its own disadvantages.

Comment by ששבש — June 15, 2006

Leave a comment

You must be logged in to post a comment.