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











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