Como reduzir a memória Apache confirmada?

2

Atualização 24 de outubro

Despejo de ps axl, conforme solicitado por @David Schwartz: link

Durante períodos de maior movimento, atingimos as conexões máximas do Apache (atualmente configuradas para 256). Eu gostaria de aumentar a configuração de conexões máximas, mas fui avisado que não, devido a nossa memória estar comprometida durante esses períodos. No entanto, o uso real da RAM não parece estar nem perto do valor comprometido.

Como o valor comprometido é calculado para os processos do Apache? E como posso reduzir isso?

Eu já tentei configurar o memory_limit do PHP para um valor mais baixo, mas isso não teve efeito sobre o valor comprometido em meus gráficos munin:

Especificações do servidor:

  • DELL PowerEdge 2950 MKIII
  • 8 GB de RAM
  • Quad core de soquete único Intel Xeon 5320 LV 1,86 GHz
  • 2 x SFF de 10 GB de 10K RPM no RAID 1
  • Apache / 2.2.15 (Unix)
  • PHP 5.3.3

O servidor é dedicado ao Apache (o MySQL está em outra caixa).

    
por Jon M 17.10.2012 / 13:14

1 resposta

0

Eu tentaria separar a veiculação de scripts PHP e arquivos estáticos.

Você pode exibir arquivos estáticos de maneira muito eficiente com worker MPM e ainda melhor com event MPM disponível para httpd 2.4+ . Mas você não pode usar este MPM para servir scripts PHP, pois o PHP não é thread-safe.

Para PHP, você pode executar uma instância httpd separada (estou executando no meu servidor com Listen 127.0.0.2:488 ) e configurar o servidor principal como um proxy reverso:

ProxyPreserveHost On
DocumentRoot /var/www/html
RewriteEngine On
RewriteCond /var/www/html%{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule ^/(.*) http://127.0.0.2:488/$1 [P,L]

Com mod_remoteip (novamente - disponível a partir do httpd 2.4) seria verdadeiramente transparente para um script PHP.

Ou use, por exemplo, php-fpm .

Desta forma, a solicitação de arquivos estáticos, conexões persistentes HTTP etc. usará uma fração da RAM.

    
por 24.10.2012 / 13:32