Configurações do eAccelerator para PHP / Centos / Apache

2

Eu tenho o eAccelerator instalado em um servidor executando o Wordpress usando PHP / Apache no CentOS. Ocasionalmente, estou obtendo "páginas brancas" persistentes, que presumivelmente são Erros Fatais do PHP (embora esses erros não apareçam no meu error_log). Essas "páginas brancas" são espalhadas aqui e ali por todo o site. Eles persistem até eu ir para a minha página control.php do eAccelerator e limpar / limpar / limpar meus caches, o que sugere que eu configurei o eAccelerator indevidamente.

Aqui estão as configurações atuais do /etc/php.ini:

  • memory_limit = 128M;
  • eaccelerator.shm_size="64" , onde shm.size é "a quantidade de memória compartilhada que o eAccelerator deve alocar para armazenar em cache os scripts PHP" (veja link )
  • eaccelerator.shm_max="0" , onde shm_max é "o tamanho máximo que um usuário pode colocar na memória compartilhada com funções como eaccelerator_put ... O valor padrão é" 0 ", o que desativa o limite"
  • eaccelerator.shm_ttl="0" - "Quando o eAccelerator não possui memória compartilhada livre suficiente para armazenar em cache um novo script, ele remove todos os scripts do cache de memória compartilhada que não tenham sido acessados em pelo menos shm_ttl segundos. Por padrão, esse valor é definido como" 0 "o que significa que o eAccelerator não tentará remover nenhum script antigo da memória compartilhada".
  • eaccelerator.shm_prune_period="0" - "Quando o eAccelerator não tem memória compartilhada livre suficiente para armazenar em cache um script, ele tenta remover scripts antigos se a tentativa anterior foi feita mais do que" shm_prune_period "segundos atrás. O valor padrão é" 0 ", o que significa que o eAccelerator ganhou tente remover qualquer script antigo da memória compartilhada. "
  • eaccelerator.keys = "shm_only" - "Essas configurações controlam os locais que o eAccelerator pode armazenar em cache o conteúdo do usuário. ... 'shm_only' dados do cache [s] na memória compartilhada"

Na minha página do phpinfo, diz:

  • memory_limit 128M
  • Version 0.9.5.3 e Caching Enabled true

Na minha página control.php do eAccelerator, diz

  • 64 MB de RAM total disponível
  • Memory usage 77.70% (49.73MB/ 64.00MB)
  • 27,6 MB é usado por scripts armazenados em cache no cache de opcode do PHP (adicionei os tamanhos de arquivo)
  • 22,1 MB é usado pelas chaves de cache, que são preenchidas pelo cache de objetos do Wordpress.

Minhas perguntas são:

  • É verdade que há apenas 36,4 MB de espaço no cache do eAccelerator para o total de "chaves de cache" (64 MB de RAM total menos o que é usado pelos scripts em cache, que são 27,6 MB no momento)?
  • O que acontece se meu aplicativo tentar gravar mais de 22,1 MB de chaves de cache no cache de memória do eAccelerator? Isso faz com que o eAccelerator enlouqueça, como eu já vi?
  • Se eu alterar o eaccelerator.shm_max para ser igual a (digamos) 32 MB, isso evitaria esse problema?
  • Eu também preciso alterar shm_ttl e shm_prune_period para fazer com que eAccelerator respeite o limite de MB definido por shm_max?

Obrigado! : -)

    
por bobbyh 24.02.2011 / 22:37

1 resposta

1

Eu uso configurações de eAccelerator quase idênticas e nunca tive nenhum problema semelhante (não tenho nenhuma configuração de "chaves"). Tanto quanto eu sei, mexendo com as configurações só vai mudar o quão efetivo, ou não, o cache é. Uma configuração "eAccelerator" incorreta só deve resultar em scripts sendo executados lentamente ... não em erros de script.

Não entendo o que você quer dizer com "36,4 MB de espaço para chaves de cache". De sua pergunta eAccelerator está usando 49,73 MB total com 27,6MB em scripts e 22,1MB em chaves (27,6 + 22,1 = 49,7) deixando 14,3MB livres.

Com suas configurações atuais quando o limite de 64MB alocado é atingido, o eAccelerator simplesmente não armazenará mais nada em cache. Não deve ser nenhum problema causado por isso, além de alguns scripts não serem executados tão rápido como seriam. Se você quiser que as entradas antigas do cache sejam excluídas, você pode jogar com as várias configurações mencionadas. Eu costumo aumentar a quantidade de memória para o eAccelerator, de modo que ele mantenha todos os scripts na memória.

Se os seus scripts estiverem mostrando "páginas brancas", eu verificaria os logs de erro. Se você não receber nenhuma mensagem de erro, eu verificaria se os logs de erro estão habilitados e funcionando. Eu tentaria desabilitar o eAccelerator e ver se você pode duplicar os erros de script. Se isso parece acontecer apenas com o eAccelerator, eu o desinstala e instalo do zero.

Outra possibilidade remota é a falta de memória ou disco que está corrompendo as versões em cache.

    
por 24.02.2011 / 23:52