Zugriffsprobleme mit UMN-Mapserver auf PostgreSQL/POSTGIS

Probleme, Fragen die mit der Installation und Anwendung der PostGIS-Erweiterung zu tun haben.
Antworten
klauss
Neuer Benutzer
Beiträge: 16
Registriert: Mo 15. Mai 2006, 12:48

Zugriffsprobleme mit UMN-Mapserver auf PostgreSQL/POSTGIS

Beitrag von klauss » Di 30. Mai 2006, 13:02

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:

Code: Alles auswählen

$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]

Gisman
Erfahrener Benutzer
Beiträge: 1122
Registriert: Fr 20. Jan 2006, 15:30
Wohnort: Pfalz
Kontaktdaten:

Beitrag von Gisman » Mi 14. Jun 2006, 16:19

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

Gruß Uwe
Have a lot of fun!

klauss
Neuer Benutzer
Beiträge: 16
Registriert: Mo 15. Mai 2006, 12:48

Beitrag von klauss » Do 15. Jun 2006, 17:46

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

Gisman
Erfahrener Benutzer
Beiträge: 1122
Registriert: Fr 20. Jan 2006, 15:30
Wohnort: Pfalz
Kontaktdaten:

Beitrag von Gisman » Mo 19. Jun 2006, 10:17

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
Have a lot of fun!

cgraefe
Neuer Benutzer
Beiträge: 2
Registriert: Di 20. Jun 2006, 22:50

Beitrag von cgraefe » Di 20. Jun 2006, 23:58

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

Gisman
Erfahrener Benutzer
Beiträge: 1122
Registriert: Fr 20. Jan 2006, 15:30
Wohnort: Pfalz
Kontaktdaten:

Beitrag von Gisman » Di 4. Jul 2006, 11:52

cgraefe hat geschrieben:Hi,

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

/Christian


Danke für den Link :)

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

Gruß Uwe
Have a lot of fun!

Antworten