From: | "Patricio Cifuentes Ithal" <pcifuentes(at)siigsa(dot)cl> |
---|---|
To: | "'Paulina Rodas'" <rodas(dot)paulina(at)gmail(dot)com> |
Cc: | <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | RE: Postgres and Mapserver timeout |
Date: | 2007-06-15 14:30:16 |
Message-ID: | A681DBDF9EDC46D1910F80B695E55110@victoria |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Paulina,
bueno primeroq todo recuerda enviar copia del correo a la lista, asi podras
obtener mas ayuda aun, con respecto a tu problema, pienso que no sea
problema d efiguras geograficas, si no que de modelado y diseño d elas
tablas, me cuentas que haces select sin los campos geograficos y que en 66
registros se demora 3 minutos, entonces eso puede ser por, hacer vacuum a la
BD y las tablas, agregarle indices a datos y claves especificas d ebusqueda
y ademas al campo geom con GIST, podrias tambien decirnos que version de
postgres y d epostgis estas ocupando, y algun ejemplo de la sconsultas que
estas haciendo.
yo tambien e desarrollado sistemas de traking para automoviles y si los
puntos no se sales de mi extencion del box3d que estoy visuliazando entonces
no despliego todo el mapa, un atecnica buena seria hacer WFS solamnete con
los puntos q se mueven y desarrollar algo en javascript para q vaya moviendo
los puntos, pasando de forma geografica a pixel dentro d euna imagen del
mapa,.
Patricio Cifuentes Ithal
Ingeniero en Informática
(: (56 - 2) 204 60 22
*: pcifuentes(at)siigsa(dot)cl
Desarrollo Tecnológico
SIIGSA
_____
De: Paulina Rodas [mailto:rodas(dot)paulina(at)gmail(dot)com]
Enviado el: viernes, 15 de junio de 2007 09:21
Para: pcifuentes(at)siigsa(dot)cl
CC: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Postgres and Mapserver timeout
Patricio,
Bueno el problema es critico, ya que los usuarios consulta la aplicacion GIS
en todo momento, alrededor de 250 usuarios conectados y que no te responda
el sistema pues si es critico.
Tienes razon sobre la escala y el tipo de figura que se almacena. La tabla
tiene informacion de posicion x,y de los vehiculos de la empresa, los mismos
que tienen un dispositivo gps que esta reportando su posicion, es por eso
que estamos actualizando esa tabla cada 20 segundos. el campo geom es tipo
point.
Realice una prueba con un programa en java que consulte la tabla en cuestion
y se demora al retornarme los 66 registros de los cuales en el select estan
campos no geograficos y se demora unos 3 minutos es retornar la consulta y
peor aun cuando ejecuto en el mismo programa varias consultas a la misma
tabla.
Me preocupa esto ya que cuando se tenga completamente migrado la aplicacion,
habran usuarios que realizan actualizaciones a tablas geograficas con mucha
mas informacion geografica (poligonos) y habran otros usuarios que consulten
esas mismas tablas y tendremos problemas que ni se va ha actualizar ni se va
a consultar.
Saludos,
Paulina
El día 14/06/07, Patricio Cifuentes Ithal <pcifuentes(at)siigsa(dot)cl
<mailto:pcifuentes(at)siigsa(dot)cl> > escribió:
Paulina,
bueno no e stan grave el problema que tienes, tengo una duda con respecto a
la version del postgres quiza redactaste mal la version, pero no debe ser
ese el error, bueno una de las tantas soluciones pasan mas que todo por
recomendaciones, para los desarrolladores de sistemas GIS en web con postgis
y mapserver con php, sugiero aumentar el tiempo d eejecución de script en
php(en php.ini), ya que los datos geograficos son bastante pesados, por ende
puede que se demore muxo mas en ejecutar y responder un select a la BD, tu
acalaracion con respecto a solo 66 registros en datos geograficos puede que
sean bastante pesados, a q me refiero, a que l ainfo geografica que se
guarda a traves d epostgis son los campos tipics d euna BD cualquiera o
tabla cualquiera, pero debes reecordar que tambien existe el campo the_geom
el cual guarda la informacion d egeorreferenciacion geografioca de la figura
que se va a visualizar, mira un ejemplo claro y un poco tecnico par alos q
entienden un poco d egis, yo quiero hacer un mapa con el pais Chile, y sus
15 regiones, tecnicamnete y si s ehace un proceso topografico como
corresponde, en tabla me debieran quedar solo 15 registros, esto es super
poco, pero toma en cuenta que si esa informacion fue tomada de una escala de
1:250000 puede que sea pesada, imaginate que sea una escala de 1:50000es mas
pesada ya que tiene mayor detalle por lo tanto mayor volumen d einformacion
recuerda q el campo the_geom se guardan todos los X,Y de la figura
geografica entre mas detalle tengas , mas coordenadas X,Y tendra, por lo
tanto mas informacion, yo he hecho bench de una consulta d echile de escala
1:10000 con solo 15 registros y se demora en unserver mas menos potente un
promedio de 50 segundos lo cual es bastante tomando en cuenta la cantidad
de registros, por eso que debes pensar en el campo the_geom que puede traer
muchicima informacion, por si no lo sabias, en las primeras versiones de
postgis el campo the_geom es de tipo geographics pero se guardaba como
texto, esto lo hacia casi imposible d econsultar sobre varias figuras
geograficas, en las nuevas versiones de postgis este campo guarda la
informacion en binario o hexadecimal, para que tenga un poco mas rapidez,
ahora la otra acalaracion es que estas ocupando la funcion ASKML lo que hace
esa funcion es recorrer toda la figura geografica convertir el hexadecimal
en texto y devolvverte un string con formato de xml, ojo existe doc que dice
q eso no es bueno con figuras d etipo linea o poligono, otro ejemplo de eso
es, imaginate un rio , etse rio tiene distinto quiebres por ende muxos
vertices, cada uno de estos vertices contiene la coord X,Y hacer ese
recorrido puede hacer muy pesado, ojo que esto no es tan catastrofico como
creen, existen soluciones para etso como por ejemplo agregar un where dentro
d ela consulta, un BOX3D en donde solo tomas la extension visible so d ela
que quieras preguntar de esa forma la consulta recorre menos registros, otro
ejemplo de eso es, si yo tengo la figura d etodo Chile y quiero solo
visualizar una region, pues saco la extension d ela region y d ela consulta
general saco el extend,: select * from tabla_geo where the_geom && 'BOX3D(X
Y, X Y)' los dos parametros del box3d corresponde al xmin y min xmax y max d
euna extension, por lo tanto como las figuras son irregulares lo mas
probable es q tambien me traida registros geograficos aledaños a la region
en cuestion que estoy consultando, osea en total 3 registros en vez d e15,
eso e sun gran avace, esto esta bien cuando la visaulizacion ennetamenete
geografica, ahora tambien debes considerar el agregar indices dentro dl
campo the_geom, esto aparece super detallado y bastante explicativo en los
manuales d epostgis, donde puedes encontrar indices GIST que son de bastante
utilidad en estos casos, y puedes reducir consultas como mi bech de 50
segundos a solo 2,3 seg. otra recomendacion es que pasa subr la cartografia
a postgres atraves d epostgis recuerda q esta cartografia en el DBF debe
estar normalizado, ya que postgres es una BD relacional asi q tambien
cuidado con eso d eno subir campos q esten demas
Patricio Cifuentes Ithal
Ingeniero en Informática
( : (56 - 2) 204 60 22
* : pcifuentes(at)siigsa(dot)cl
Desarrollo Tecnológico
SIIGSA
_____
De: pgsql-es-ayuda-owner(at)postgresql(dot)org [mailto:
<mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org>
pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Paulina Rodas
Enviado el: jueves, 14 de junio de 2007 09:29
Para: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: [pgsql-es-ayuda] Postgres and Mapserver timeout
Estimados,
Tengo un problema para realizar consultas a una tabla que se actualiza cada
20 segundos.
El ambiente es:
Bdd postgres version 1.6.2 en Linux,
Mapserver en Windows 2000
Servicio windows que realiza la actualizacion de dos tablas cada 20 segundos
Servicio: La actualizacion es cada 20 segundos y registro por registro, la
tabla tiene 66 registros, El servicio actualiza en dos tablas cada una de 66
registros, y realiza una consulta sobre una de las tablas "select
askml(figura) from tabla" para generar un archivo kml.
MapServer realiza la consulta a una tabla para presentar datos actualizados,
pero cuando la aplicacion de mapserver se dibuja y tiene que cargar los
datos de la tabla se demora y da el error de " Fatal error: Maximum
execution time of 30 seconds exceeded in D:\eeq\htdocs\eeq.inc.php on line
431", y cuadno le bajo al servicio ahi la aplicacion responde rapido y no
da error.
En windows tengo instalado pgAdmin, con el cual visualizo el estado del
servidor y se visualiza que se demora en el select de "askml", en los update
no se demora nada en cada update, y se queda un "fetch all in mycursor" que
es de mapserver hasta que da un time out.
Por favor necesito ayuda con esto, estamos migrando nuestra aplicacion de
gis y nuestra base de datos oracle a postgis, pero tenemos estros problemas,
es urgente solucionarlo si no se desistira la migracion, ya que la
aplicacion gis es altamente utilizada en la empresa.
Saludos,
Paulina
--
Este mensaje ha sido analizado por MailScanner
<http://www.mailscanner.info/>
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.
<http://www.siigsa.cl/> www.siigsa.cl
--
Este mensaje ha sido analizado por MailScanner
<http://www.mailscanner.info/>
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.
<http://www.siigsa.cl/> www.siigsa.cl
--
Este mensaje ha sido analizado por MailScanner
<http://www.mailscanner.info/>
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.
<http://www.siigsa.cl> www.siigsa.cl
--
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.
From | Date | Subject | |
---|---|---|---|
Next Message | Arturo Munive | 2007-06-15 14:34:18 | Re: asignar valor creciente |
Previous Message | Oswaldo Hernández | 2007-06-15 14:25:27 | Re: asignar valor creciente |