How to improve and monitor MapTiler Server performance

We are running performance tests for vector tiles serving and rasterization. In these tests, tiles are served without any caching to obtain the raw server performance. Every VM runs a single MapTiler Server instance with a default rasterization configuration. The load was generated from 50 virtual users.

Performance tests results

OS Azure VM type RAM CPUs Vector tiles hits/s Vector tiles AVG response time (ms) Raster tiles hits/s Raster tiles AVG response time (ms)
RHEL 8.2 Standard A2 v2 4 GB 2 190 206 13 2910
Ubuntu 20.04 Standard D4s v3 16 GB 4 490 76 34 1099
Ubuntu 20.04 Standard D2as v4 8 GB 2 668 56 37 1031

Performance tips

  • Configure caching in production is basically a must-have, see how to configure it in Nginx.
  • More CPUs and RAM will be used mainly during map rasterization, if you serve vector/raster tiles, multiple CPUs will not help you much. Rather invest in fast SSD drives.
  • Rasterization uses internal caching massively, if you use it for the whole planet (lots of fonts etc) 16 GB RAM is the minimum.
  • The Rasterization performance can be tuned in server settings/rasterization. Setting renderer pool size higher than CPU count can slightly increase throughput but beware that every renderer allocates its own memory space.
  • The raster size for Map raster tiles is either 256 or 512.
  • The Static Maps have limits defined in Settings -> Static maps.

 

How to get the best rasterization performance

This configuration or higher will help you achieve the best rasterization performance
(making raster PNG/JPG images from OpenStreetMap dataset)

MapTiler Server Technical Specification
MapTiler Server behind NGINX