User:Mmd/Overpass API/Performance Project 2016/Full Day Simulation

From OpenStreetMap Wiki
Jump to navigation Jump to search

Test scenario

  • Basis: productive queries from overpass-api.de, dated January 16th 2016 (File: transactions.2016-01-16_00_00_01.log.gz)
  • Client / Load driver:
    • Python script including transaction log file parsing + feeding into producer/consumer queue
    • 32 concurrent threads
    • No HTTP/1.1 keep alive
    • GZIP compression
    • Random sleep time of 1..5 seconds after each query
    • Load driver ran on dev.overpass-api.de (same provider as Overpass Server)
    • 803029 total requests
      • Status 200: 802903
      • Status 302: 4
      • Status 400: 38 (parsing issues in load driver, sending invalid requests)
      • Status 404: 1 (kill_my_queries)
      • Status 500: 10 (known issue: https://github.com/drolbr/Overpass-API/issues/227)
      • Status 504: 73 (timeout after 15s runtime)
  • Overpass Server:
    • Full attic database, timestamped 2016-04-06 00:00:00
    • DB Built via daily diffs, uses LZ4 compression
    • Total DB size ~180GB
    • DB was stored exclusively on SSD
    • 32GB Main memory
    • 8 Cores (Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz)
    • Area creation ran before load test
    • No updates/area creation during load test
    • Tested on branch: https://github.com/mmd-osm/Overpass-API/tree/test754_threadupd
    • FastCGI configured for Overpass API endpoint on Apache
    • Dispatcher sleep time hardcoded to 1ms
    • (additonal infos about relevant patches to be added)


Test run without any sleep time and 8 concurrent threads processes full day worth of queries in 14 hours at constant 90% CPU utilization.

Munin stats

Overpass API Perf2016 munin apache accesses.png


Overpass API Perf2016 munin apache processes.png


Overpass API Perf2016 munin apache volume.png


Overpass API Perf2016 munin cpu.png


Overpass API Perf2016 munin forks.png


Overpass API Perf2016 munin load.png


Overpass API Perf2016 munin memory.png


Overpass API Perf2016 munin request count.png


Overpass API Perf2016 munin disk util.png


Overpass API Perf2016 munin threads.png


Relevant changes

Comparison to 0.7.52

  • Overpass Server:
    • Full attic database, based on clone from dev.overpass-api.de/clone, timestamped 12 March 2016
    • zlib compression, map files not compressed
    • Area creation ran before load test (runtime: 13.5 hours)
    • No updates/area creation during load test
    • Tested on official 0.7.52 version
    • CGI
    • Total runtime for test: 30 hours


Overpass API Perf2016 munin apache accesses 0752.png


Overpass API Perf2016 munin apache processes 0752.png


Overpass API Perf2016 munin apache volume 0752.png


Overpass API Perf2016 munin cpu 0752.png


Overpass API Perf2016 munin forks 0752.png


Overpass API Perf2016 munin load 0752.png


Overpass API Perf2016 munin memory 0752.png


Overpass API Perf2016 munin request count 0752.png


Overpass API Perf2016 munin disk util 0752.png


Overpass API Perf2016 munin threads 0752.png