Otimizar o desempenho do Apache

3

Estou procurando maneiras de otimizar nosso servidor da Web atual hospedado internamente. Estou tentando fornecer informações relevantes abaixo. Por favor, deixe-me saber se você precisaria de informações adicionais para ajudar.

O servidor está executando um único site, que é uma plataforma de pedidos de pizza on-line criada no Zend Framework (ver1). Em estatísticas de tráfego do último mês, aproximadamente 6.000 pageloads por dia, concentrados principalmente em torno da hora do jantar. Cerca de 1500 cargas / picos de hora nesse período.

Recentemente, atualizamos de uma linha aDSL de 2 / 2mbit para fibra de 100 / 100mbit e ainda temos problemas de desempenho na hora do jantar. Nós assumimos que o 2mbit era o problema. O site é bastante veloz em períodos de baixa carga.

Hardware

CPU: Intel(R) Xeon(R) CPU            5160  @ 3.00GHz (3000.13-MHz K8-class CPU)

Mem: 328M Active, 4427M Inact, 891M Wired, 244M Cache, 623M Buf, 33M Free
Swap: 16G Total, 468K Used, 16G Free
(6GB physical, 16GB swap)

Filesystem   Type     Size    Used   Avail Capacity  Mounted on
/dev/ad7s1a  ufs      4.8G    768M    3.7G    17%    /
devfs        devfs    1.0K    1.0K      0B   100%    /dev
/dev/ad7s1g  ufs      176G    5.2G    157G     3%    /home
/dev/ad7s1e  ufs      4.8G    2.8M    4.5G     0%    /tmp
/dev/ad7s1f  ufs       19G    3.5G     14G    19%    /usr
/dev/ad7s1d  ufs      4.8G    550M    3.9G    12%    /var

Sistema operacional do servidor

FreeBSD 8.2-RELEASE

Software

apache-2.2.17
php5-5.3.8
mysql-server-5.5

Pegada do Apache (exemplo, tirada de # no topo)

31140 www              1  45    0   377M 41588K lockf   2   0:00  0.00% httpd
31122 www              1  44    0   375M 35416K lockf   2   0:00  0.00% httpd
31109 www              1  44    0   375M 38188K lockf   2   0:00  0.00% httpd
31113 www              1  44    0   375M 35188K lockf   2   0:00  0.00% httpd

O Apache está usando o prefork MPM, APC (Alternative PHP Cache). Módulo SSL é carregado, mas não utilizado (como em realmente não funciona, portanto, não usado). Existe um arquivo contendo configurações para módulos MPM, mas como eu vejo que não está incluído no arquivo httpd.conf, a linha de inclusão está comentado. Assim, eu acho que o MPM prefork também está funcionando de valores padrão.

Aqui estão alguns outros valores conf do Apache que eu encontrei - que estão incluídos no https.conf

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

UseCanonicalName Off
HostnameLookups Off

Carregue quando tiver problemas de desempenho

Observação: solicitações de API para back-end

Quanto à nossa plataforma on-line, ela se comunica com nosso sistema de back-end por meio de uma API (GET / POST). Para cotações de preços em cestas (armazenadas em cache até novo item adicionado), produtos (em cache), preços em produtos (em cache). E o servidor backend está realmente mostrando carga real ao ver problemas de desempenho na web apear. Então, eu estou mais voltado para isso, pois são os pedidos de API que levam uma eternidade para serem concluídos, mantendo assim os clientes no servidor da web. Então, minha pergunta é, são as estatísticas dadas acima (tráfego / carga) e a configuração atual do software. Em comparação com as especificações da conexão à internet e do hardware, os sinais de um servidor estressado são? E eu seria capaz de aumentar o número máximo de clientes no servidor da web, com base nos recursos disponíveis e na pegada real do Apache?

    
por Phliplip 16.10.2012 / 00:39

4 respostas

1

O desempenho do site é um grande assunto. Pelo que vejo, o problema provavelmente não é o Apache.

Existem algumas coisas que podem ajudar você a melhorar seu desempenho.

  • Armazenamento em cache! Eu não sei o quanto você armazena em cache no seu código PHP. Mas como você não está usando o SSL e eu acho que você tem muitos dados somente leitura, tente Verniz

  • Ativar mod_expires

  • Faça o perfil da sua API de site / back-end com JMeter

por 23.10.2012 / 14:34
0

Não, os itens acima não são sinais de um servidor estressado.

Enquanto você pode estar sofrendo saturação de E / S de rede (desde que você não forneça dados reais sobre ele), isso é extremamente improvável com tão poucas solicitações reais ocorrendo durante os horários de pico.

Você precisa executar alguns testes no backend HTTP para ver se ele está sendo executado na capacidade máxima. Se for, então você precisa consertar isso.

Para referência futura, você deve configurar e usar o manipulador server-status para monitorar o apache, conforme documentado aqui: link

    
por 23.10.2012 / 14:48
0

O desempenho do Apache pode ser ajustado com as configurações do Worker MPM e Prefork, alterando os segmentos de reserva e máximo de manutenção para aumentar o desempenho e o consumo de menos memória. Você pode encontrar a configuração ideal para Prefork e worker de here

    
por 15.01.2014 / 07:43
-2

Você pode estar ficando sem processos (definidos por MaxSpareServers e StartServers ). O padrão é apenas 10, portanto, se os tempos de resposta forem altos, isso pode não ser suficiente para uma solicitação a cada 2 segundos (1500 / hora).

Ative o módulo server-status para monitorar os processos em uso. Certifique-se de definir regras de acesso para que isso só seja acessível internamente.

    
por 16.10.2012 / 03:37