Installing relevant libraries
o sudo apt-get update
o sudo apt-get install -y --force-yes --no-install-recommends g++ make expat autoconf automake autotools-dev libtool curl ca-certificates unzip
o sudo apt-get install bzip2 libexpat1-dev zlib1g-dev liblz4-dev libfcgi-dev libevent-dev libbz2-dev libicu-dev libosmium2-dev supervisor
o curl -o osm-3s_v0.7.58_mmd.zip https://codeload.github.com/mmd-osm/Overpass-API/zip/test758_lz4hash
o unzip -q osm-3s_v0.7.58_mmd.zip
Running autotools
o cd Overpass-API-test758_lz4hash/src
o autoscan
o aclocal
o autoheader
o libtoolize
o automake --add-missing
o autoconf
o cd ..
Configure options
o mkdir -p build
o cd build
o ../src/configure CXXFLAGS="-O2 -mtune=native -ggdb -std=c++11" LDFLAGS="-lpthread -lbz2 -levent -licuuc -licui18n" --enable-fastcgi --enable-lz4 --prefix=/srv/osm3s
o make V=0 -j7
o make install
Preparing database
Converting zlib database to lz4 compressed database and add tagged nodes file
[date:"2017-08-31T00:00:00"][out:json][timeout:4000];
area["type"="boundary"]["ISO3166-2"="DE-NW"];
foreach(
node(area)["opening_hours"]->.t; .t out tags;
node(area)["opening_hours:kitchen"]->.t; .t out tags;
node(area)["opening_hours:warm_kitchen"]->.t; .t out tags;
node(area)["happy_hours"]->.t; .t out tags;
node(area)["delivery_hours"]->.t; .t out tags;
node(area)["opening_hours:delivery"]->.t; .t out tags;
node(area)["lit"]->.t; .t out tags;
node(area)["smoking_hours"]->.t; .t out tags;
node(area)["collection_times"]->.t; .t out tags;
node(area)["service_times"]->.t; .t out tags;
node(area)["fee"]->.t; .t out tags;
way(area)["opening_hours"]->.t; .t out tags;
way(area)["opening_hours:kitchen"]->.t; .t out tags;
way(area)["opening_hours:warm_kitchen"]->.t; .t out tags;
way(area)["happy_hours"]->.t; .t out tags;
way(area)["delivery_hours"]->.t; .t out tags;
way(area)["opening_hours:delivery"]->.t; .t out tags;
way(area)["lit"]->.t; .t out tags;
way(area)["smoking_hours"]->.t; .t out tags;
way(area)["collection_times"]->.t; .t out tags;
way(area)["service_times"]->.t; .t out tags;
way(area)["fee"]->.t; .t out tags;
);
Overpass Turbo - Map example on large bounding box
Query with very large bbox
Bbox is counter productive, removing it gives faster results
[out:json][timeout:180][maxsize:1048576];(
node["amenity"="compressed_air"](-80.87282721505684,-180,88.09879913729107,180);way["amenity"="compressed_air"](-80.87282721505684,-180,88.09879913729107,180);relation["amenity"="compressed_air"](-80.87282721505684,-180,88.09879913729107,180););out center meta;>;out skel qt;
Expensive Achavi style queries on large bbox
[adiff:"2017-08-06T22:39:23Z","2017-08-06T22:43:13Z"];(node(36.3181693,5.5767073,47.8357181,18.9969694)(changed);way(36.3181693,5.5767073,47.8357181,18.9969694)(changed););out meta geom(36.3181693,5.5767073,47.8357181,18.9969694);
Intro
Full simulation on this branch, Commit: https://github.com/mmd-osm/Overpass-API/commit/4957911428c4d93327f8dc93c091a1a711a19b9f
HW & SW
Intel(R) Xeon(R) CPU E3-1270 v3 @ 3.50GHz
32 GB mem
400+ GB DC SSD
Nginx
Overpass
Config: https://github.com/mmd-osm/Overpass-API/wiki/Settings-for-0.7.58mmd-branch
Preparation
Compiling sources
Installing relevant libraries o
sudo apt-get update
osudo apt-get install -y --force-yes --no-install-recommends g++ make expat autoconf automake autotools-dev libtool curl ca-certificates unzip
osudo apt-get install bzip2 libexpat1-dev zlib1g-dev liblz4-dev libfcgi-dev libevent-dev libbz2-dev libicu-dev libosmium2-dev supervisor
ocurl -o osm-3s_v0.7.58_mmd.zip https://codeload.github.com/mmd-osm/Overpass-API/zip/test758_lz4hash
ounzip -q osm-3s_v0.7.58_mmd.zip
cd Overpass-API-test758_lz4hash/src
oautoscan
oaclocal
oautoheader
olibtoolize
oautomake --add-missing
oautoconf
ocd ..
mkdir -p build
ocd build
o../src/configure CXXFLAGS="-O2 -mtune=native -ggdb -std=c++11" LDFLAGS="-lpthread -lbz2 -levent -licuuc -licui18n" --enable-fastcgi --enable-lz4 --prefix=/srv/osm3s
omake V=0 -j7
omake install
Preparing database
Converting zlib database to lz4 compressed database and add tagged nodes file
osm3s_query --db-dir={{database directory zlib}} --clone={{new lz4 database directory}} --clone-compression=lz4 --clone-map-compression=lz4
create_tagged_nodes {{new lz4 database directory}}
- this step creates two new files nodes_tagged.bin and nodes_tagged.bin.idxConfiguring supervisor
Stats
Reponse times (quantile)
Reprocessed with 7 parallel tasks, 0s wait time.
Most expensive queries
Executed multiple times because of timeout issues
Executed multiple times because of timeout issues
Also slow for
["ISO3166-2"="DE-BY"]
Code: https://github.com/opening-hours/opening_hours.js/blob/master/Makefile#L338-L356
Could use regexp instead (already implemented but inactive), also filter out [fee!=no][fee!=yes][lit!=no][lit!=yes]
Query aborts anyway as it uses too much memory: runtime error: Query run out of memory using about 2048 MB of RAM.
If query runs a few minutes after midnight, leave out [date:...] altogether, it just doesn't matter.
Follow up actions:
Overpass Turbo - Map example on large bounding box
Query with very large bbox
Bbox is counter productive, removing it gives faster results
Munin charts (perf test system on custom branch)
Munin charts (main instance)