PHP incapaz de alocar memória

4

No meu caminho para o escritório esta manhã, todos os sites no nosso VPS compartilhado começaram a dar o mesmo erro (várias vezes, não o típico erro memory_limit que é fatal):

Warning: Unknown: Unable to allocate memory for pool. in Unknown on line 0

O servidor compartilhado é um contêiner OpenVZ de 64 bits que executa o cPanel. Há apenas ~ 6 VPS no host - este é o maior com apenas 4GB. O host em si tem 24 GB de RAM. Como os gráficos abaixo mostram, o uso da memória no host e no VPS é bastante baixo. O uso da CPU / disco / host parece ser normal. RlimitMem foi definido como 583653034 , mas o uso de memória é quase o mesmo que costuma ser.

Apache 2.2, PHP 5.2 (mod_php)

Reiniciar o Apache corrigiu o problema por enquanto. No entanto, gostaria de evitar que isso aconteça novamente e não tenho certeza do que estava limitando a memória. RlimitMem foi definido como 583653034 , mas o uso da memória é quase o mesmo que costuma ser. Parece haver muita memória: o que causou esse erro?

Uso de memória VPS

UsodaMemóriadoHost

Informações da APC

 apc.ttl=0
 apc.shm_size=0
 apc.mmap_file_mask=(blank)

1 segmento (s) com 32,0 MBytes (memória mmap, bloqueio mutex pthread)

    
por Reece45 18.02.2011 / 18:15

4 respostas

6

Esse é definitivamente o erro que você recebe quando o APC fica sem memória. Quando eu (re) construo servidores, muitas vezes esqueço de aumentar esse valor para 128 M (adequado para minha aplicação) e esse é o erro exato que você vê.

    
por 18.02.2011 / 20:43
1

Alguma falha em / proc / bc / resources?

Todos os failcounts devem ser 0 ou permanecer iguais desde o último incidente.

Você precisa:

  1. Aumente os limites de recursos com vzct set <CTID> ... --save nos recursos que têm contagens de falhas (consulte man vzctl a seção set ). Você também pode modificar os limites de recursos diretamente em /etc/vz/conf/ . Provavelmente, em todos os casos, você precisa reinicializar os contêineres depois de aumentar os limites.

    Por segurança, aumente as configurações (barreira e limite) para recursos problemáticos para x2 (duas vezes) o máximo.

  2. Anote as contagens de falhas atuais e fique de olho nelas para que elas não aumentem mais.

Para mais informações sobre como controlar vários recursos, você pode usar o link como ponto de partida.

    
por 19.02.2011 / 07:20
0

Você pode nos contar um pouco mais sobre como o host é inscrito? (por exemplo, quanto RAM total você comprometeu com as VMs, quanta memória RAM para cada uma das VMs no host) Eu entendo que sua maior é de 4 GB, mas se os outros são todos de 3 GB e o sistema está inscrito em 19 GB, isso deve mostrar 5GB de memória livre para o sistema operacional de hospedagem. Minha matemática, minhas suposições ou qualquer outra coisa não combinam com o gráfico de memória do host acima (mostrando 94% de RAM ocupada).

    
por 18.02.2011 / 18:23
0

Limites sysctl de alocação de memória compartilhada? Dê uma olhada no shmmax e nos amigos em /etc/sysctl.conf.

Alternativamente, você está executando o PHP de 32 bits e / ou o Apache em um sistema operacional de 64 bits? Nós vimos um comportamento bizarro de 'meu deus, estou sem memória e preencherei até mesmo com 16 GB de memória física livre' de aplicativos de 32 bits de uso intenso de memória no Linux de 64 bits.

    
por 18.02.2011 / 23:28