Estoy teniendo la experiencia más loca de GeoServer en este momento y esperaba obtener alguna opinión sobre lo que podría estar causando este comportamiento.
Estoy utilizando Apache Bench para evaluar el rendimiento de renderización de una capa a través de la interfaz WMS de GeoServer y accidentalmente descubrí que el tamaño del icono vectorial tiene un efecto muy significativo en el rendimiento. La imagen que estoy renderizando:
- Características de 25.000 puntos
- Regla de renderización única en SLD
- 1900x1200 píxeles
- La concurrencia de solicitudes es de 5
- GeoServer es 2.6.1
- La JVM es Oracle Java 7 SE
- No utilizar el JAI nativo
La regla de renderización única del SLD tiene el siguiente aspecto:
<PointSymbolizer>
<Graphic>
<Mark>
<WellKnownName>circle</WellKnownName>
<Fill>
<CssParameter name="fill">#FF0000</CssParameter>
<CssParameter name="fill-opacity">1.0</CssParameter>
</Fill>
</Mark>
<Size>
<ogc:Literal>50</ogc:Literal>
</Size>
</Graphic>
</PointSymbolizer>
Este gráfico muestra cómo varía el tiempo de respuesta para la misma solicitud en función del tamaño del icono
Como se trata de un icono vectorial había asumido que el renderizado de cualquier tamaño tenía tanto impacto en el rendimiento como cualquier otro tamaño, pero parece que a partir de un determinado tamaño (quizás 16px) el rendimiento empieza a resentirse y más allá de 30px baja drásticamente.
Esto tiene implicaciones obvias para la forma en que escribo futuros SLD, pero en este momento me interesa más saber por qué sucede esto. ¿Alguna idea?
EDITAR : Con un poco más de investigación he encontrado que el aumento del tamaño (a escala) de un icono PNG da un aumento mucho más lineal en el tiempo de renderizado y hay un tamaño, para esta capa en particular, cuando los iconos PNG se vuelven más rápidos que los iconos vectoriales. También he visto que la relación entre el tamaño del icono y el rendimiento es más lineal con un menor número de características. Como parece que el número de características y el tamaño de los iconos interactúan para afectar al rendimiento, sólo puedo asumir que esto está relacionado con el uso de la memoria, sólo que no estoy seguro de cómo exactamente.