Desempenho insatisfatório do website [duplicado]

1

Não tenho certeza se esse é o fórum correto para fazer minha pergunta.

Eu tenho um site onde o número de visitantes está aumentando e está enfrentando um tempo de resposta ruim. Não sou especialista em servidores e, por esse motivo, quero expor meu problema aqui para receber alguns comentários. O site tem as seguintes características:

  • Desenvolvido com o ASP.NET Web Forms (eu implementarei uma nova versão com o ASP.NET MVC em breve).
  • Ele usa um banco de dados do PostgreSQL 9.1.
  • É 100% dinâmico, o que significa que cada página é formada no tempo de execução obtendo informações do banco de dados.
  • Hospedado em um servidor de nuvem com 2 núcleos e 4 GB de RAM.
  • Windows Server 2012 na unidade C:
  • DB do PostgreSQL em outro "disco rígido" como a unidade D:
  • O número médio de visitantes diários é de 2.500

Observando o Gerenciador de Tarefas, percebo que existem muitos processos do PostgreSQL que consomem 100% da CPU. Outro processo que é mostrado no "IIS Worker Process", mas eu não o vi tão crítico quanto o processo do PostgreSQL. Portanto, parece que o principal problema aqui tem a ver com o acesso ao banco de dados. Quando o uso da CPU é alto, a resposta do site é extremamente baixa e também é muito difícil estabelecer uma conexão de área de trabalho remota.

Pensei em atualizar o servidor de nuvem para, por exemplo, 4 núcleos e 8 GB de RAM, mas, primeiro, quero obter feedback de especialistas para que eu possa ter a melhor abordagem. Não sou especialista em servidores e, por esse motivo, não quero dar os passos às cegas.

Respeitosamente, Jorge Maldonado

    
por JORGE 06.08.2018 / 18:36

1 resposta

2

É difícil dizer qual é o problema exato sem fornecer algum tipo de exemplo de consulta, mas primeiro sugiro que um DBA revise suas consultas comuns para garantir que você não está perdendo nenhum índice. Disparar um monte de varreduras de tabela completas em um grande conjunto de dados pode causar problemas significativos de desempenho.

Minha segunda sugestão é revisar algum tipo de solução para armazenamento em cache. Especificamente, cache de página inteira. Algo como o Varnish permitirá que você armazene em cache toda a página renderizada para que você não precise executar consultas duplicadas e caras. link - lembre-se que isso é caso a caso, e você não deve esperar armazenar todas as páginas do seu site em cache por razões óbvias, a menos que haja não é conteúdo dinâmico.

Por fim, você pode considerar a configuração da replicação mestre / escravo. Isso permitirá que você crie n de réplicas para lidar com a crescente carga de trabalho de leitura que está ocorrendo. Certifique-se de fazer pesquisas suficientes sobre como manter a replicação, pois isso provavelmente adicionará alguma sobrecarga às suas tarefas de administração do BD

Aumentar o tamanho da sua instância de banco de dados provará ter retornos decrescentes. Se houver um problema de desempenho do SQL, sugiro resolver isso primeiro.

    
por 06.08.2018 / 18:42