Sysadmin 101: Como posso descobrir por que meu servidor falha e monitora o desempenho?

3

Eu tenho um site com Drupal que parece ter problemas de desempenho sem fim. Foi lento há cerca de 5 meses atrás. Eu trouxe alguns caras que instalaram o nginx para visitantes anônimos, ajaxificaram algumas consultas para que não disparassem durante o carregamento da página e me ajudaram a encontrar alguns gargalos no código.

Durante cerca de um mês, o site foi significativamente mais rápido, embora não "rápido" em nenhum trecho da palavra. Enquanto isso, estou gastando US $ 400 / mês com o Slicehost para hospedar um site que receba menos de 5.000 / uniques por dia. Sim, você leu certo. Vá Drupal.

Recentemente, o site começou a travar novamente e está lento novamente. Não posso contratar pessoas para entrar, estudar meu código de cima a baixo e fazer alterações que podem ou não ajudar mais. E não posso me dar ao luxo de lançar mais hardware no problema.

Então eu preciso descobrir qual é o problema eu mesmo. Perguntas:

  • Quando o apache falha, é possível descobrir o que causou a falha? Tem que haver um jeito, certo? Se sim, como posso fazer isso? Existe software que eu possa usar para me informar qual processo causou a morte do meu servidor? (por exemplo, "O Apache falhou porque alguém visitou a página X." ou "O Apache falhou porque você importava muitos itens de RSS do feed X.") É preciso haver uma maneira de aprender isso, certo?

  • Qual é a melhor maneira de monitorar meu desempenho atual do apache? Meus amigos desenvolvedores me dizem para "usar Top, cara", mas o Top mostra um monte de números sem nenhum contexto. Eu não tenho idéia do que se qualifica como um número ruim ou um bom número no Top, ou quais processos são relevantes e quais não são. Existe alguma ferramenta de monitoramento de servidores que seja amigável? Idealmente, eu poderia ter uma página que me desse um indicador codificado por cores sobre como o apache está funcionando e, em seguida, mostre-me uma lista de processos ou páginas que estão sugando agora. Dessa forma, eu poderia saber quando o desempenho está ruim e o que está causando isso é tão ruim.

  • Por que a memória PHP é importante? Meu aparentemente tem uma impressão de pé de 30MB de memória. Será que vai correr mais rápido se eu derrubar esse número?

Obrigado por qualquer conselho. Passei um ano ou mais tentando aumentar minha receita de publicidade para poder contratar um empreiteiro para resolver meus problemas de desempenho. Eu não queria ter que aprender todo esse vodu de sysadmin. Agora estou resignada com o fato de que talvez não tenha escolha.

    
por bflora 10.04.2010 / 22:17

2 respostas

1

O Drupal pode ser muito bem dimensionado; fale com alguns webmasters em sua comunidade e você encontrará pessoas que estão excedendo esses números regularmente, então não posso dizer que é um problema inerente ao Drupal. Algumas coisas vêm à mente: você tem o cache ativado? Tem certeza que não é seu banco de dados (MySQL / Postgres, etc.)? Em que tipo de hardware seu site está sendo executado? Existem outros sites? Por favor, forneça mais detalhes; há muitas variáveis desconhecidas no momento.

    
por 10.04.2010 / 22:56
1

Você realmente não forneceu muitas informações técnicas, mas uma das otimizações mais fáceis e eficazes para o Drupal (e outras grandes aplicações PHP) é usando APC, memcache ou similar.

O APC sozinho é muito fácil de configurar e muito eficaz. Aqui estão minhas configurações que parecem funcionar bem com o Drupal (no arquivo php.ini):

extension=apc.so
apc.apc.stat = 0
apc.include_once_override = 1
apc.shm_size = 90

realpath_cache_size = 256K
realpath_cache_ttl = 180

O tamanho do apc.shm_size é o mais importante (máximo de MB da memória do servidor usado para o filecache .php). Normalmente, um tamanho menor é suficiente, mas se esse cache for muito pequeno, o cache será quase inútil. Para a maioria das instalações do Drupal, "50" seria suficiente. No entanto, se você tiver várias instalações Drupal ativas no mesmo servidor que NÃO sejam multisites, será necessário definir isso ainda mais.

Se você estiver usando o APC, você precisa ter certeza de que o Zend Optimizer está desativado, eles não funcionam bem juntos. O APC sozinho pode aumentar a velocidade de carregamento da página em 30 a 40%. Se o shm estiver definido, velocidades de carregamento de página muito baixas não aumentarão.

Além disso, gostaria de saber se os caras que fizeram a otimização inicial realmente conheciam o Drupal e fizeram otimizações do Drupal ou apenas coisas gerais do servidor. Você provavelmente tem esse conjunto, mas para ter certeza de ter as configurações adequadas em admin/settings/performance . Isso é:

Caching mode: normal
Page compression: enabled
Optimize CSS files: enabled
Optimize JavaScript files: enabled

Todos estes são muito eficazes.

Você provavelmente também está usando Views, que podem ser otimizadas de várias maneiras, mas cada View também pode ter seu cache interno e um tempo de vida de cache. Se você fizer o cache de suas páginas de qualquer maneira e os usuários forem na maioria anônimos, isso não terá um grande efeito.

Existem muitas outras maneiras de otimizar (e você provavelmente ainda deve aprender o material de administração). Se o log do Drupal em admin/reports/dblog não mostrar os erros que você está procurando, por exemplo, a maioria dos erros fatais e "erros de tela branca" nunca serão exibidos.

  • informações sobre o impacto do Apache Você deve tentar localizar os logs do apache e / ou php para obter mais informações sobre o motivo da falha. Por exemplo:

locate error.log ou locate php.log e use o local para ver as últimas mensagens de log: sudo tail -n 100 /var/log/apache2/error.log < - um caminho de amostra do meu servidor Quando você encontrar o erro, pesquise no Google.

  • Monitorando o apache "top" não é muito fácil de usar, mas é rápido e funciona em praticamente todas as máquinas UNIX. Eu costumo usá-lo para ver se apache2 ou mysql estão sufocando.

  • Uso de memória Se o módulo "devel" disser que um carregamento de página leva cerca de 30M, é bastante normal para um módulo Drupal com muitos módulos. Eu tenho algumas instalações usando mais (como 40M), mas muitos também usam menos. Meu projeto atual usa cerca de 20 milhões por visualização de página normal. Desativar módulos desnecessários (ou alternar para módulos mais eficazes) é uma maneira de diminuir o uso da memória.

Enquanto estiver no php.ini, certifique-se de que 'memory_limit' não seja muito baixo. O Drupal usa muita memória e, por exemplo, todas as operações de dimensionamento de imagem são muito pesadas na memória. O padrão é muito baixo. Em teoria, você instalará pode funcionar com 35M, mas eu configuraria pelo menos o dobro para garantir que todas as operações funcionem. Alguns podem discordar, mas geralmente estou tendo mais de 100 milhões.

Se você quer fazer otimizações de hardcore do Drupal, existem muitos guias, mas este site é provavelmente o mais completo: link

E sim, se você está pagando tanto por um mês por hospedagem, você deve ser capaz de contratar um especialista por uma hora ou mais:).

    
por 11.04.2010 / 16:25