Zugriffsprobleme mit UMN-Mapserver auf PostgreSQL/POSTGIS

Hallo Liste,

ich habe ein Problem beim Zugriff des Mapservers auf PostgreSQL. Ich habe das Problem bereits in der Mapserverliste eingestellt, aber offensichtlich hat niemand einen Tipp für mich. Da das Problem vermutlich im Bereich PostgreSQL/POSTGIS zu suchen ist, stelle ich das Problem auch hier ein.
Ich habe mittels Mapscript eine Anwendung erstellt, mit der verschiedene Daten aus der Datenbank (Punkte, Linien und Polygone) dargestellt werden können. Die Anwendung funktioniert bei Tests ohne Probleme. Wenn jedoch mehrere Clients gleichzeitig Abfragen starten, treten Fehler auf.

Eine Fehlermeldung lautet

Warning: [MapServer Error]: msDrawMap(): Failed to draw layer named ‘Puffer’. in C:\Webserver\websites\MapServer\koeln_buf2.phtml on line 423

Warning: [MapServer Error]: prepare_database(): Error executing POSTGIS BEGIN statement. in C:\Webserver\websites\MapServer\koeln_buf2.phtml on line 423

Warning: [MapServer Error]: msPOSTGISLayerWhichShapes(): Error executing POSTGIS SQL statement (in FETCH ALL): DECLARE mycursor BINARY CURSOR FOR SELECT lage::text,asbinary(force_collection(force_2d(the_geom)),‘NDR’),oid::text from (select lk.the_geom as the_geom, lk.gid as oid, lage from lage_k lk, poi p where distance(lk.the_geom, p.the_geom) < 150 and p.bezeichnung = ‘Geldinstitute’ AND lk.lage LIKE ‘%’ AND datum >= ‘2005/05/28 00:00:00’ AND datum <= ‘2006/05/29 23:59:59’ ORDER BY lage DESC) AS new_table WHERE the_geom && setSRID(‘BOX3D(2550220.14387 5629446.95902996,2585841.33414001 5665068.1493)’::BOX3D, 31466 ) - in C:\Webserver\websites\MapServer\koeln_buf2.phtml on line 423

Die Zeile 423 lautet:

$image= $map->draw();

Der Fehler tritt nur bei mehreren gleichzeitigen Anfragen auf, ansonsten werden die Daten richtig dargestellt.

Die Fehlersituation ist auf verschiedenen Rechnern (WIN 2000 mit IIS 5 und XP mit Apache 2) nachvollziehbar. Ich nutze Mapserver 4.6.1, php 5.0.3 und PostgreSQL 8.1.

Hat jemand einen Tipp, der mir weiterhelfen könnte?

Danke im voraus.

Klaus[/code][/quote]

Konnte es sein das deine shared-buffers zu klein bzw zu wenige sind?

Gruß Uwe

Hallo Gisman,

ich bin als Einsteiger in PostgreSQL mit den verschiedenen Parametern noch nicht vertraut.
Die entsprechenden Einstellungen in meiner postgersql.conf lauten:

  • - Memory -

shared_buffers = 1000 # min 16 or max_connections*2, 8KB each
#temp_buffers = 1000 # min 100, 8KB each
#max_prepared_transactions = 5 # can be 0 or more

note: increasing max_prepared_transactions costs ~600 bytes of shared memory

per transaction slot, plus lock space (see max_locks_per_transaction).

#work_mem = 1024 # min 64, size in KB
#maintenance_work_mem = 16384 # min 1024, size in KB
#max_stack_depth = 2048 # min 100, size in KB

- Free Space Map -

#max_fsm_pages = 20000 # min max_fsm_relations*16, 6 bytes each
#max_fsm_relations = 1000 # min 100, ~70 bytes each

Der Parameter

max_connections steht auf 100

Gibt es irgendwelche Erfahrungswerte für die Einstellungen?

Mit freundlichen Grüßen

Klaus

Moin noch mal…

Zusätzlich zur PN: Ich weiß nicht, ob der Mapserver für jedes Thema, das er abruft eine eigene Connection erzeugt. Wenn er das tut, sind die 100 schnell erschöpft. Vielleicht setzt du den Wert einfach mal höher. Um wieviele Clients geht es denn?
Könnte natürlich auch sein, das der Mapserver ein Problem bekommt, worauf die Zeile 423 hindeutet. Anscheinend versucht er wohl ein Image zu übergeben, das es vermutlich nicht gibt. Kenn mich da aber nicht aus…

gruß UWe

Hi,

Ich glaube die 100 Connections sind mehr als genug,
da der MapServer ja die Verbindung nicht stetig offen
hält. Wozu auch?

Des Weiteren bin ich der Meinung das der MapServer gerade
unter Windows nicht wirklich für den Multi-Threading
Betrieb geeignet ist.

Eine Alternative unter Windows wäre
SharpMap - http://sharpmap.iter.dk
SharpMap ist eine C# Mapping Bibliothek, welche man
sowohl auf dem Desktop, als auch in ASP.Net einsetzen
kann.
Unterstützt:
Shapefile,
PostgreSQL,
OLEDB Datenquellen für Punkt-Layer (z.B Access)
Oracle,
WMS.

BR
/Christian

Danke für den Link :slight_smile:

Ist der OGC-Kompatibel, auf der Homepage steht nur was über OGC-Simplefeatures?

Gruß Uwe