Mais

Considerações de memória para GeoStack baseado em nuvem

Considerações de memória para GeoStack baseado em nuvem


Algum tempo atrás eu perguntei sobre as considerações de hardware da implementação GeoStack baseada em nuvem. Como seguimento a esta questão

Já existem alguns bons indicadores em questão relacionada, mas eles se referem principalmente ao PostGIS.

Portanto, gostaria de pedir-lhe alguns conselhos sobre a alocação de memória para um simples mapeamento da Web Ubuntu box, baseado em PostGIS, GeoServer e OpenLayers / GeoEXT.

Por simples, neste caso, quero dizer servir no máximo 10-20 camadas WMS, armazenamento em cache, getFeatureInfo e obtenção de legendas. O conjunto de dados subjacente consistirá em cerca de 3.000 polígonos de áreas administrativas. Ele será hospedado em nuvem VPS - AWS ou rackspace.

Tenho três perguntas sobre esta configuração:

  1. Faz sentido manter o PostgreSQL e o Geoserver em duas instâncias separadas? Ou é melhor se concentrar em um servidor mais poderoso?

  2. Os servidores em nuvem são escalonáveis. Portanto, assumindo que 100% é a quantidade total de memória disponível - quais seriam suas sugestões para definir os parâmetros de memória no PostgreSQL? E quanto à alocação de memória java para GeoServer?

  3. Alguma outra dica para ajustar a memória?

Obrigado pela ajuda.

PS Eu fiz esta pergunta nas listas de discussão dos usuários do GeoServer, mas não recebi nenhuma sugestão até agora.


Tento responder às suas perguntas abaixo:

  1. Faz sentido manter o PostgreSQL e o Geoserver em duas instâncias separadas? Ou é melhor se concentrar em um servidor mais poderoso?

Pelo número relatado de camadas e recursos, acho que um servidor deve ser suficiente, mas sugiro que você faça as contas e descubra a combinação mais barata e, em seguida, avance se achar o desempenho insatisfatório.

  1. Os servidores em nuvem são escalonáveis. Portanto, assumindo que 100% é a quantidade total de memória disponível - quais seriam suas sugestões para definir os parâmetros de memória no PostgreSQL? E quanto à alocação de memória java para GeoServer?

Se você tem restrição de memória, apenas dê 1 GB ao Geoserver e o resto ao Postgres: tune java -Xmx e -Xms opções para o mesmo valor de 1024M.

Idealmente, você gostaria de ter todo o banco de dados postgres na RAM. Aliás, isso nem sempre é fácil de conseguir, isso deve ajudar.

  1. Alguma outra dica para ajustar a memória?

Observação: o seguinte está relacionado à hospedagem do Amazon EC2, não à memória do servidor em si.

Não consigo encontrar o link agora, mas se você tiver desempenho flutuante, deve considerar ir para instâncias maiores. O raciocínio é que os servidores EC2 devem (não sabemos ao certo) ter algo entre 16 e 32 GB de RAM cada, portanto, se você estiver em um servidor com outras 20 instâncias de 1,7 GB, é muito provável que você encontre CPU ou I / O contenção, embora se sua instância for maior, o número de instâncias que compartilham o mesmo hardware físico será menor e os recursos devem ser distribuídos de forma mais justa (ou seja, você obtém mais e de forma consistente).


Dado que você está usando DB e Java e provavelmente na mesma máquina - obtenha uma máquina com o máximo de memória possível. Quanto mais memória você der a essas duas peças, mais felizes elas ficarão e mais rápidos serão seus tempos de resposta. Dito isso - você também terá operações intensivas de disco para ambos, portanto, obtenha alguns discos rápidos. Dependendo do que você está fazendo com a pilha, você pode ou não precisar de potência da CPU.

Quantos usuários ou solicitações simultâneas você espera na caixa? O que esses usuários pedirão que a caixa faça: servir tiles, fazer um geoprocesso, calcular uma consulta sql espacial? Tudo isso importa para as especificações de sua máquina.