From 1b14ff117d278cd2149eb6f39d68e545efb54033 Mon Sep 17 00:00:00 2001 From: Grant Slater Date: Sun, 5 Apr 2020 14:39:53 +0100 Subject: [PATCH] tilecache: add script for reporting fastest peers --- cookbooks/tilecache/recipes/default.rb | 7 +++++++ .../templates/tilecache-fastest-peers.erb | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 cookbooks/tilecache/templates/tilecache-fastest-peers.erb diff --git a/cookbooks/tilecache/recipes/default.rb b/cookbooks/tilecache/recipes/default.rb index 683a53d09..e6e848ce1 100644 --- a/cookbooks/tilecache/recipes/default.rb +++ b/cookbooks/tilecache/recipes/default.rb @@ -205,3 +205,10 @@ template "/srv/tilecache/tilecache-curl-time" do mode 0o755 variables :caches => tilecaches, :renders => tilerenders end + +template "/srv/tilecache/tilecache-fastest-peers" do + source "tilecache-fastest-peers.erb" + owner "root" + group "root" + mode 0o755 +end diff --git a/cookbooks/tilecache/templates/tilecache-fastest-peers.erb b/cookbooks/tilecache/templates/tilecache-fastest-peers.erb new file mode 100644 index 000000000..c6745de3a --- /dev/null +++ b/cookbooks/tilecache/templates/tilecache-fastest-peers.erb @@ -0,0 +1,16 @@ +#!/bin/bash + +# Find performance reports for last few minutes +# Add up total time taken to download tile grouped by remote server +# Remove 1 second per successful time report (de-prioritise new servers) +# Add 30 seconds per failed time report request +# Sort time reports +# Strip to best 4 server names + +/usr/bin/find /srv/tilecache/data/ -type f -iname 'tilecache-*.txt' -mmin -10 -print0 \ + | /usr/bin/xargs -0 --no-run-if-empty /usr/bin/tail --quiet -n 20 \ + | /usr/bin/awk -F ',' '$2 == 200 {time[$3] += $1; time[$3] -= 1} $2 != 200 {time[$3] +=30} END{for (i in time) print time[i], i}' \ + | /usr/bin/sort -k1n \ + | /usr/bin/cut -d '/' -f 3 \ + | /bin/grep -E '(openstreetmap|localhost)' \ + | /usr/bin/head -n 4 -- 2.39.5