With this graph, it is hopefully possible to see where (i.e. towards which zoomlevel) most of the rendering time goes,
and thus might give some indication where optimisations in the style sheet are best focused at, if performance is an issue.
It useses purely wallclock time and thus does not account for individual resources.
In addition to the request queue and the dirty queue, there are now also a requestPrio and requestBulk queue.
The rendering order now is first render requests from requestPrio, then from request followed by the
dirty queue and finally if no other requests are queued, render from the requestBulk queue.
RequestPrio, Request and RequestBulk all block, whereas Diry immediately returns with NotDoneYet.
This also changes mod_tile to submit requests that if not rendered in time would result in 404 errors as high priority.
prioBulk should be useful for things like rerendering all the outdated tiles in the background, but this patch
does not include those changes.
This extends renderd to support TCP/IP sockets in addition to unix sockets for submitting rendering requests
and thus renderd can be on a different server.
Furthermore, to distribute the load across multiple servers, renderd can now also dispatch requests to slave renderd's.
So Mod_tile (or any other program driving renderd) submits all its requests to the master renderd, where the requests get
queued in case there are too many. The master renderd then dispatches requests one at a time to either local rendering threads
or to the slave threads, which ever are free for the next request.
To configure this, you can add multiple [renderdN] sections, where N represents the Nth slave and specifies how many threads
it has, its host name and ip port.
The protocol currently does not pass back the actual tiles, so all renderd's have to be able to write to the same
tile directory (e.g. via NFS)
This allows to monitor the performance of renderd and how well it can keep up with the
render requests that are coming in or if it drops them due to overload.
For large setups of mod_tile, and renderd, it may be beneficial to have a reverse proxy infront of the main tile server.
However when using a fast updating db e.g. running off the minutly diffs, the proxy may either deliver stale content, or the
cache expiry has to be set very short, which limits the effectiveness of the proxy. Instead, this patch adds an explicit
mechanism to renderd to signal to the proxy which tiles have been rerendered and thus should be discarded from the cache.
* -t|--tile-dir option for render_list and convert_meta
* renderd reads it from renderd.conf section "[renderd]" setting "tile_dir"
* mod_tile reads from Apache conf ModTileTileDir directive
There are still some places in store.c left, where HASH_DIR is used directly. More fixes needed.
Made renderd more configurable at runtime: socketname, num_threads and the mapnik settings plugins_dir, font_dir, and font_dir_recurse are now available through renderd.conf
There should be only one incompatible change: the [Default] section in the config is now in all lowercase "[default]" because the parser lib gives section and key names back in lowercase