So Paul Norman and I ran a bit of tracing of this via IRC. It seems as
PostgreSQL (9.1.11) has no problems, that it's something with renderd/mapnik. I
ended up decided to install a new VM with PostgreSQL 9.3 and running tile
rendering on that same machine. I'll get back with results in a couple of days.
The whole plan with separation of rendering and database is that I wanted to be
able to upgrade and fiddle with database or rendering without affecting the
other. Giving that up and hoping to get things working :-)
karl
On 16 Feb 2014, at 22:05, Karl Wettin <[email protected]> wrote:
> Hi all,
>
> we're running a switch2osm-package Ubuntu serving tiles. The PostGIS is
> located on another machine and communicates with the tile server via TCP.
>
> For a couple of months now we've been running against a Sweden-only database
> without any problems. When now installed planet on a new PostGIS-VM and get
> these sort of errors when requesting tiles in densely mapped areas on zoom
> levels that are less than 15 or so:
>
> Feb 16 21:11:51 modtile2 renderd[1353]: reason: Postgis Plugin: out of
> memory for query result#012#012in executeQuery Full sql was: 'SELECT
> ST_AsBinary("way") AS geom,"feature" FROM (select way, religion,#012coalesce
> (aeroway, amenity, landuse, leisure, military, "natural", power, tourism,
> highway) as feature from (#012select way,#012('aeroway_' || (case when
> aeroway in ('apron', 'aerodrome') then aeroway else null end)) as
> aeroway,#012('amenity_' || (case when amenity in ('parking', 'university',
> 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity
> else null end)) as amenity,#012('landuse_' || (case when landuse in
> ('quarry', 'vineyard', 'orchard', 'cemetery', 'grave_yard', 'residential',
> 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard',
> 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green',
> 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill',
> 'greenfield', 'construction') then landuse else
null end)) as landuse,#012('leisure_' || (case when leisure in
('swimming_pool', 'playground', 'park', 'recreation_ground', 'common',
'garden', 'golf_course', 'picnic_table') then leisure else null end)) as
leisure,#012('military_' || (case when military in ('barracks', 'danger_area')
then military else null end)) as military,#012('natural_' || (case when
"natural" in
('field','beach','desert','heath','mud','grassland','wood','sand','scrub') then
"natural" else null end)) as "natural",#012('power_' || (case when power in
('station','sub_station','generator') then power else null end)) as
power,#012('tourism_' || (case when tourism in ('attraction', 'camp_site',
'caravan_site', 'picnic_site', 'zoo') then tourism else null end)) as
tourism,#012('highway_' || (case when highway in ('services', 'rest_area') then
highway else null end)) as highway,#012case when religion in
('christian','jewish') then religion else 'INT-generic'::text end as
religion#012 from planet_osm_polygon#01
2 where landuse is not null#012 or leisure
>
> My question is, what process is it that runs out of memory? PostgreSQL?
> Mapnik? Renderd? My guess is that PostgreSQL manage just fine, passes down a
> result set with a couple of hundred MB data to Renderd which is not able to
> allocate this amount of data. Or perhaps it's Mapnik that can't handle the
> data passed down from Renderd.
>
> The PostgreSQL VM has some 16GB of RAM and plenty of shared- and work memory
> for the processes, the tile rendering VM has 8GB RAM.
>
> Most of the time this error get caught and ignored by Renderd, but every
> fifth time or so it causes Renderd to simply die on us.
>
> After upping shmax to 1GB it works a bit better. After upping it to 4GB we
> see these in the renderd log:
>
> Feb 16 22:01:16 modtile2 renderd[3065]: DEBUG: Connection 0, fd 12 closed,
> now 9 left
> Feb 16 22:01:38 modtile2 renderd[3065]: ERROR: failed to render TILE
> osm_planet 13 4208-4215 2688-2695
> Feb 16 22:01:38 modtile2 renderd[3065]: reason: std::bad_alloc
> Feb 16 22:01:38 modtile2 renderd[3065]: DEBUG: DONE TILE osm_planet 13
> 4208-4215 2688-2695 in 22.315 seconds
>
> What's up here?
>
> Could it simply be that we really really should be running the PostgreSQL on
> the same machine as the tile renderer? If so, what is the reason?
>
>
>
> karl
_______________________________________________
dev mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/dev