Performance deep dive

ows_stats

append

&ows_stats=yes

to getmaps query for a view like this

{
    profile: {
        query: 0.060224294662475586,
        count-datasets: 0.027852535247802734,
        extent-in-query: 0.017885684967041016,
        write: 0.014366865158081055
    },
    info: {
        n_dates: 1,
        zoom_factor: 14.030289733687082,
        n_datasets: 9,
        too_many_datasets: false,
        zoomed_out: true,
        write_action: "Polygon"
    }
}

Run pyspy

Docker-Compose

To make the chained docker compose with pre-indexed database:

COMPOSE_CHAIN='docker compose -f docker-compose.yaml -f docker-compose.db.yaml -f docker-compose.pyspy.yaml'

To make the chained docker compose with local database:

COMPOSE_CHAIN='docker compose -f docker-compose.yaml -f docker-compose.pyspy.yaml'

To start ows with pre-indexed db and pyspy on the side:

$COMPOSE_CHAIN up -d

Get Datacube-ows docker process id:

OWS_PID=$(docker inspect --format '{{.State.Pid}}' $(docker inspect -f '{{.Name}}' \
$($COMPOSE_CHAIN ps -q ows) | cut -c2-))

Run py-spy:

$COMPOSE_CHAIN run pyspy record -f speedscope -o profile.json \
--pid $OWS_PID --subprocesses