Atualmente, estou tentando renderizar Water (3.198.333 registros) e fronteiras mundiais detalhadas (processadas_p) para o mundo. Consigo renderizar as duas camadas, mas não estou feliz com o desempenho.
Minha configuração atual é a seguinte:
- Instância do Amazon EC2 (m2.2xlarge)
- 34,2 GB de memória
- 13 unidades de computação EC2 (4 núcleos virtuais com 3,25 unidades de computação EC2 cada)
- 850 GB de armazenamento de instância
- Plataforma de 64 bits
- Desempenho de E / S: Alto
- Mapnik, 4 tópicos
- Configurações do Postgresql com base nesses benchmarks
- Índice GiST em vigor para todas as minhas camadas
Algumas das minhas idéias para aumentar o desempenho :
- Simplificando meus recursos
- Não renderize peças de água - quando o carregamento com camadas abertas pode definir a falha de carga na cor azul
- Divida as características da água do mundo em várias seções e explique explicitamente aos limites do mapnik. Por exemplo, se eu separar os recursos hídricos da América do Norte, quando o Mapnik estiver gerando blocos para a Austrália, ele não deverá consultar a América do Norte para ver se algum de seus recursos está nos blocos.
- Minha segunda ideia é um pouco mais louca. Como o Mapnik executa uma consulta espacial para cada bloco, a fim de encontrar recursos a serem processados, eu posso executar essa consulta antecipadamente para todas as minhas camadas. Eu assumiria que isso economizaria algum poder de processamento.
Minha pergunta: O que mais posso fazer para otimizar a renderização de blocos?
Respostas:
Aqui estão alguns links: http://www.geofabrik.de/media/2010-07-10-rendering-toolchain-performance.pdf
http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf
outro ponto: dividir dados em mais tabelas: quanto menos objetos filtrar, mais rápida será a renderização
fonte