APC problemas de memória compartilhada

3

Eu tenho nginx + php-fpm e APC instalados em um servidor freebsd, e estou tendo problemas constantes com o php-fpm conectados de alguma forma com o APC. O php-fpm congela no estado 'lockf' (em top ) e assim o site não está funcionando. Eu notei que baixar apc.shm_size para seu valor padrão 30 está ajudando o php-fpm a não congelar, mas 30Mb não é suficiente para mim, porque eu armazeno muitas variáveis no APC. Eu notei que aumentar apc.shm_size para valores mais altos (como 60) faz com que os processos php-fpm usem muito mais memória, praticamente toda a memória física do servidor, o que é estranho porque eu entendi que 60Mb são compartilhados entre todos php-fpm processos e não deve afetar o uso de memória de cada processo php-fpm. Eu tentei alterar apc.shm_segments valor para algo mais que 1 e recebi um erro ao reiniciar o php-fpm:

PHP Startup: apc.shm_segments setting ignored in MMAP mode in <b>Unknown</b> on line <b>0</b><br />
Unknown(0) : Warning - PHP Startup: apc.shm_segments setting ignored in MMAP mode

então, por favor, diga-me como esses parâmetros realmente afetam o APC e por que o php-fpm morre ao usar grande quantidade de memória compartilhada? o que significa MMAP mode ? Eu estou pensando em usar o xcache, ele está trabalhando com o php-fpm e estável o suficiente para produção?

    
por kipelovets 13.08.2010 / 15:16

3 respostas

3

Sobre o mmap:

Configure o script de apc tem diretiva:

  --disable-apc-mmap
                          Disable mmap support and use IPC shm instead

Além disso, há três tipos de bloqueio:

  --enable-apc-sem
                          Enable semaphore locks instead of fcntl
  --enable-apc-spinlocks
                          Enable spin locks  EXPERIMENTAL

+ Padrão fcntl . Você pode tentar spinlocks e ver o que acontece

PS. Isso também deve ser útil: link

    
por 16.08.2010 / 10:14
2

Se você não aumentou o valor do sysctl kern.ipc.shmmax , você precisa fazer isso. Por padrão é 32 MB, pelo menos no meu FreeBSD 8.0 e muitas distribuições Linux também.

Teste sysctl -w kern.ipc.shmmax=134217728 para aumentar para 128 megabytes. Em seguida, tente aumentar apc.shm_size novamente para mais de 30 MB.

Se isso ajudar, coloque seu valor kern.ipc.shmmax preferido em /etc/sysctl.conf para fazer a alteração persistir entre as reinicializações.

    
por 16.08.2010 / 10:51
0

Como você configurou a memória?

apc.shm_size=64 ou apc.shm_size=64M , como no manual ?

O último resolveu meu problema semelhante.

    
por 18.11.2010 / 13:12