Actualmente estoy tratando de representar Agua (3.198.333 registros) y fronteras mundiales detalladas (procesado_p) para el mundo. Tengo éxito en renderizar ambas capas, pero no estoy contento con el rendimiento.
Mi configuración actual es la siguiente:
- Instancia de Amazon EC2 (m2.2xlarge)
- 34,2 GB de memoria
- 13 unidades de cálculo EC2 (4 núcleos virtuales con 3.25 unidades de cálculo EC2 cada uno)
- 850 GB de almacenamiento de instancias
- Plataforma de 64 bits
- Rendimiento de E / S: alto
- Mapnik, 4 hilos
- Configuración de Postgresql basada en estos puntos de referencia
- Índice GiST en su lugar para todas mis capas
Algunas de mis ideas para aumentar el rendimiento :
- Simplificando mis características
- No renderice baldosas de agua: cuando la carga con capas abiertas puede configurar la falla de carga en color azul
- Divida las características del agua del mundo en varias secciones y explíquele explícitamente a mapnik sus límites. Por ejemplo, si divido las características del agua de América del Norte, cuando Mapnik genera mosaicos para Australia, no debería consultar a América del Norte para ver si alguna de sus características está en los mosaicos.
- Mi segunda idea es un poco más loca. Dado que Mapnik realiza una consulta espacial para cada mosaico con el fin de encontrar características para procesar, puedo realizar esta consulta de antemano para todas mis capas. Supongo que esto ahorraría algo de potencia de procesamiento.
Mi pregunta: ¿Qué más puedo hacer para optimizar la representación de mosaicos?
Respuestas:
Aquí hay algunos enlaces: http://www.geofabrik.de/media/2010-07-10-rendering-toolchain-performance.pdf
http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf
otro punto: dividir datos en más tablas: cuantos menos objetos se filtren, más rápido será el renderizado
fuente