When serving tiles from a geopackage (~85 GiB, ~20 layers) I see that the response times are drastically lower when requests are made in parallel. E.g. when I create test requests for 6 tiles in parallel the response time is ~8000ms versus ~300ms when I create them one after another.
I've tried looking at the source code (I'm a Rust rookie) but I couldn't find a hint yet. I tried. I've tried supplying the NOLOCK open option. Thinking that it might be the overhead of a locked GPKG that is trying to be opened by multiple clients at the same time. Even though it should by possible to open an sqlite db concurrently. That helped a little to get it to ~7000 ms.
Does anyone have an idea where the delay in response times might originate?
Edit: connection is already opened read-only by default. Opening shared would be unsafe.
Edit2: Made an image with gdal 3.4.2 and t-rex to try out NOLOCK.
Edit3: The same effect happens with a FlatGeoBuf datasource.
When serving tiles from a geopackage (~85 GiB, ~20 layers) I see that the response times are drastically lower when requests are made in parallel. E.g. when I create test requests for 6 tiles in parallel the response time is ~8000ms versus ~300ms when I create them one after another.
I've tried looking at the source code (I'm a Rust rookie) but I couldn't find a hint yet. I tried. I've tried supplying the NOLOCK open option. Thinking that it might be the overhead of a locked GPKG that is trying to be opened by multiple clients at the same time. Even though it should by possible to open an sqlite db concurrently. That helped a little to get it to ~7000 ms.
Does anyone have an idea where the delay in response times might originate?
Edit: connection is already opened read-only by default. Opening shared would be unsafe.
Edit2: Made an image with gdal 3.4.2 and t-rex to try out NOLOCK.
Edit3: The same effect happens with a FlatGeoBuf datasource.