[OSM-dev] NodeJS Tileserver

Peter Körmer osm-lists at mazdermind.de
Mon Apr 4 22:52:31 BST 2011


Hi

around a month ago, jochen announced [1] a tileserver written in nodejs. 
I really liked it and because I also really liked to learn nodejs, I 
wrote my own version [2]. It has more features than the original and is 
better commented. Also it is able to talk to a current tirex 
installation which listens on an unix_dgram socket instead of an udp4 one.

It offers the following calls:
GET /
   send a default OpenLayers html showing all configured maps

GET /maps
   list all maps with their max/min zoom levels (powers the OpenLayers html)

GET /stats
   very detailed statistics about requests, renders and timeouts on a 
global, per-map and per-zoom level

GET /tiles/0/0/0.png
   deliver the tile or request it from tirex it it doesn't exist yet.

GET /tiles/0/0/0.png/render
   directly enqueue the tile to tirex

GET /tiles/0/0/0.png/dirty
   mark the tile dirty on disk

GET /tiles/0/0/0.png/status
   fetch the stytus of the tile


This Tileserver has a log of useful features
  - directly reads tirex config and offers all rendered maps
  - very detailed statistics tracking about requests, renders and 
timeouts on a global, per-map and per-zoom level
  - serve up to 20 zoom-levels (limited by metatile file naming)
  - custom cache configurations for arbitary zoom-level ranges
  - serving static files from disk
  - very low memory footprint (15-30 MB of RSS)

but it's still not feature-complete. It's still lacking those important 
features:
  - gzip compression for static files
  - ip-based request throtteling

To get the latest features (esp.ecially the /dirty call) you need the 
not-yet released version 0.5 of nodejs (available from github [3]) but 
if you don't need the /dirty-call the current stable 0.4.x will also do.

So, this thing is experimental as nodejs is, so don't use it on your 
production system right now :)

Peter


[1] 
<http://blog.jochentopf.com/2011-03-03-a-nodejs-tileserver-for-tirex.html>
[2] <http://svn.toolserver.org/svnroot/mazder/node-tileserver/>
[3] <https://github.com/joyent/node>



More information about the dev mailing list