-
Notifications
You must be signed in to change notification settings - Fork 669
Open
Milestone
Description
Memory leak when serving raster tiles
Description
When using tileserver-gl (v5.3.1) for serving raster tiles, there appears to be a memory leak. The server's memory usage steadily increases when loading raster tiles, unlike with vector tiles where memory usage remains stable.
Observed Behavior
- When using vector tiles, memory usage is stable regardless of the number of requests
- When switching to raster tiles (by changing
vector
toraster
in the URL), memory usage spikes with each new request - Memory increases when viewing different areas/zoom levels that require loading new tiles
- Memory appears to stabilize after most tiles have been loaded, but is never released
- When requesting tiles from a new data source, memory usage spikes again
Evidence
Environment
- tileserver-gl version: v5.3.1
- Running in Docker:
maptiler/tileserver-gl:v5.3.1
- Command used:
docker run --rm -it -v "$SCRIPT_DIR/tileserver-gl:/data" -p 8080:8080 maptiler/tileserver-gl:v5.3.1
Configuration
tileserver-gl config.json:
{
"options": {
"paths": {
"fonts": "fonts",
"styles": "styles"
}
},
"styles": {
"tiles-4": {
"style": "tiles-4/style.json"
},
"tiles-5": {
"style": "tiles-5/style.json"
}
},
"data": {
}
}
Example style.json:
{
"version": 8,
"name": "Style",
"sources": {
"tiles": {
"type": "vector",
"tiles": ["https://XXX/{z}/{x}/{y}.pbf"],
"maxzoom": 14,
"minzoom": 5
}
},
"sprite": "https://XXX/sprites/osm-bright/icons",
"glyphs": "https://XXX/fonts/{fontstack}/{range}.pbf",
"layers": [
{
"id": "roads-casing",
"type": "line",
"source": "tiles",
"source-layer": "default",
"filter": [
"all",
["has", "testValue"]
],
"layout": {
"line-cap": "round",
"line-join": "round",
"visibility": "visible"
},
"paint": {
"line-color": "#000000",
"line-width": [
"interpolate", ["linear"], ["zoom"],
5, 4,
8, 5,
11, 5.5,
14, 6,
18, 7
],
"line-opacity": 1
}
},
{
"id": "roads-fill",
"type": "line",
"source": "tiles",
"source-layer": "default",
"filter": [
"all",
["has", "testValue"]
],
"layout": {
"line-cap": "round",
"line-join": "round",
"visibility": "visible"
},
"paint": {
"line-color": [
"step",
["get", "testValue"],
"#660000", 0,
"#FF7700", 50,
"#FFFF00", 75,
"#00FF00", 100,
"#0099FF", 150,
"#00FF00"
],
"line-width": [
"interpolate", ["linear"], ["zoom"],
5, 2,
8, 3,
11, 3.5,
14, 4,
18, 5
],
"line-opacity": 1
}
}
]
}
Steps to Reproduce
- Set up tileserver-gl with the above configuration
- Load vector tiles for a while - observe stable memory usage
- Switch to raster tiles (changing
vector
toraster
in the URL) - Pan/zoom around the map to load different tiles - observe memory increasing
- Switch to a different style/data source - observe another memory spike
Expected Behavior
Memory usage should remain stable for raster tiles just as it does for vector tiles, or the memory should be released after tiles are no longer needed.
Metadata
Metadata
Assignees
Labels
No labels