Otimizando o carregamento do servidor apache

3

Temos um problema com uma carga de servidor dedicada.

Temos 16 processadores com 4 core @ 2.40GHz, se eu entendi corretamente a saída cat / proc / cpuinfo.

Infelizmente, não tenho acesso a free -m ou vmstat.

Mas, de cima, percebi que temos 24 GB.

E um instantâneo da parte superior sobre processos:

Tantoquantoeuvejo,amemórianãoéusadaemtudo.Masocpuéusadopesadamente.OApacheconsomeamaiorpartedaCPU.

Outrainformaçãoútil:

Every1.0s:psu-Chttpd,mysqld,phpTueMar2710:48:192012USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMANDroot74760.00.144680837880?SNsMar060:43/opt/zone/sbin/httpd-DSSL-DSLOT_ID0-f/etc/opt/zone/apache/ssl_httpd.confmysql3606141.62.11113672529876?SNlFeb2021503:48/opt/zone/sbin/mysqld--basedir=/opt/zone--datadir=/srvdata/mysql--user=mysql--log-error=/srvdata/mysql/dn79.err--pid-file=/srvdata/mysql/mysqld.pid--socket=/tmp/mysql.sock--port=3306root372570.00.042405616840?SNsMar221:03/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http527430.00.144710030360?SN10:400:00/opt/zone/sbin/httpd-DSSL-DSLOT_ID0-f/etc/opt/zone/apache/ssl_httpd.confhttp527440.00.144710030360?SN10:400:00/opt/zone/sbin/httpd-DSSL-DSLOT_ID0-f/etc/opt/zone/apache/ssl_httpd.confhttp527450.00.144710030360?SN10:400:00/opt/zone/sbin/httpd-DSSL-DSLOT_ID0-f/etc/opt/zone/apache/ssl_httpd.confhttp527460.00.144710030360?SN10:400:00/opt/zone/sbin/httpd-DSSL-DSLOT_ID0-f/etc/opt/zone/apache/ssl_httpd.confhttp527470.00.144695630324?SN10:400:00/opt/zone/sbin/httpd-DSSL-DSLOT_ID0-f/etc/opt/zone/apache/ssl_httpd.confhttp5298069.11.8852468458088?RN10:415:02/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http5348347.00.8615088221040?RN10:432:05/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http536411.80.244658054632?SN10:450:03/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http5438481.20.9625828229972?RN10:452:14/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http5441147.70.5535992142416?RN10:451:09/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http5447041.70.4512528120012?RN10:460:54/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http544750.10.143701641528?SN10:460:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http544861.50.244563653916?SN10:460:02/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http545312.50.244542453012?SN10:460:02/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http545490.00.04241889188?SN10:460:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http546420.00.04241889200?SN10:470:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http546510.00.04241889188?SN10:470:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http546610.00.04241889208?SN10:470:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http546636.90.244993658560?SN10:470:03/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http546666.00.245335661124?SN10:470:02/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http546672.80.143760842088?SN10:470:01/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http546701.50.143754042172?SN10:470:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http546722.10.143907643648?SN10:470:01/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http547090.00.04241889192?SN10:470:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http547111.00.143728441780?SN10:470:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http5471211.80.244817254700?SN10:470:02/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http547200.00.04241889192?SN10:480:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http547210.00.04241889188?SN10:480:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http547479.10.244356851848?SN10:480:01/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http547821.80.143870837896?RN10:480:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http547840.00.04241889180?SN10:480:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http547850.00.04241889188?SN10:480:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http547890.00.04241889188?SN10:480:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http547900.00.04241889188?SN10:480:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http547910.00.04241889188?SN10:480:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0http547920.00.04240568352?SN10:480:00/opt/zone/sbin/httpd-f/etc/opt/zone/apache/httpd.conf-DSLOT_ID0

Webalizermostraoseguinte:

O que pode ser feito na seguinte situação? A aplicação é Magento.

    
por Jevgeni Smirnov 27.03.2012 / 09:47

4 respostas

5

Você está latindo na árvore errada. Aparentemente, o Apache está consumindo a CPU; na realidade, há mod_php , que precisa atender às suas Magento páginas.

E esta última é sua resposta: Magento com certeza é uma fera pesada. Não tente otimizar o Apache neste ponto, concentre-se na sua configuração do Magento. Não decepcione se você não tiver sucesso. Muitos tentaram isso no Server Fault, muitos não tiveram sucesso (pelo que tenho visto). Um software pesado é um software pesado.

    
por 27.03.2012 / 09:54
1

Além da resposta de Janne Pikkarainens, gostaria de sugerir o seguinte:

  • use tmpfs na pasta cache do magento
  • Verifique se todo o cache do magento está ativado (html, xml etc etc)
  • armazenar sessões em tmpfs, a menos que você tenha vários back-ends
  • use o apc como fast_backend (e, opcionalmente, o memcached como slow_backend)
  • considere o uso de verniz para armazenar algumas ou algumas páginas em cache.

Mais em Varnish e Magento:

Plugin de verniz comercial que usa ESI e outra solução usando chamadas AJAX .

    
por 27.03.2012 / 10:02
0

Você tem o APC instalado? Se não, isso fará uma grande diferença.

Depois disso, se bem me lembro, o Magento gosta de ter um proxy reverso em cache na frente dele. Verifique quais cabeçalhos de armazenamento em cache está fornecendo antes de implementar isso.

    
por 27.03.2012 / 10:00
0

Encontre quem configurou o servidor e atire neles?

O ajuste HTTP preencheria um livro grande. Mas olhando para as informações que você forneceu ...

O ferro grande é um desperdício de tempo e dinheiro para servidores web - você obtém desempenho / disponibilidade / valor muito melhores em várias máquinas de baixo custo.

Por que o httpd está sendo executado em uma prioridade de agendamento anormalmente alta? Por que sua sessão ssh está sendo executada com uma prioridade menor que o sshd?

Seus processos do apache parecem ter uma pegada bem grande - você removeu os módulos que não está usando? No entanto, parece que seu maior problema é a quantidade de CPU usada pelo Apache - o PHP gosta da CPU. E o magento é particularmente faminto de CPU.

No entanto, a carga não é tão ruim considerando a quantidade de hardware que você tem. Digamos que você tenha processadores 16x4, mas as principais capturas de tela mostram apenas 6 processos usando uma quantidade significativa de CPU. Você está tentando reduzir a carga ou aumentar o desempenho? Front end ou back end?

Colocar um proxy reverso na frente do Apache ajudará com o desempenho (supondo que você tenha configuração de cache e compactação corretamente para o conteúdo) - IMHO Varnish ou nginx são muito eficazes. Ambos fornecem suporte a ESI - mas você precisará de algumas mudanças no Magento para suportar isso. Além de lidar com a veiculação de conteúdo estático com menos esforço, o proxy pode liberar o recurso httpd mais rapidamente e concluir o processo de envio da página pela rede com menos esforço.

Onde você está armazenando os dados da sua sessão? Se for o manipulador padrão, convém movê-lo para o memcache (a implementação do couchbase tem várias vantagens técnicas).

Verifique suas estatísticas da APC para ter certeza de que tem memória suficiente para armazenar a maior parte do código.

    
por 27.03.2012 / 13:22