apc apc.shm_segments ignorado apc.shm_size se comportando de maneira estranha no apache2

3

este é o atual apc.ini

extension=apc.so
apc.enabled=1
apc.ttl=86400
apc.user_ttl=86400
apc.shm_segments=1
apc.shm_size=64

que me dá

1 Segment(s) with 64.0 MBytes 
(mmap memory, pthread mutex locking)

o engraçado é que, de acordo com isso, apenas 32 milhões devem ser possíveis ..

cat /proc/sys/kernel/shmmax
33554432

se eu aumentar os segmentos, ele não terá efeito, mas será visível em apc.php se eu aumentar shm_size acima de 64 (independentemente da configuração dos segmentos), recebo o seguinte erro:

[apc-error] apc_mmap: mmap failed: No space left on device

eu preciso de cerca de 90M de opcache, então, pelo que entendi, considerando a configuração shmmax, eu usaria segmentos de 2x32M ...

qualquer um pode pensar em um motivo pelo qual vários segmentos não funcionem? alguma ideia do motivo pelo qual o 64M está trabalhando, embora o limite de shmmax seja de 32M?

APC Version 3.0.19
PHP Version 5.2.0-8+etch16

e sistema (lenny) ...

uname -a
Linux vs210044.vserver.de 2.6.9-023stab052.4-smp #1 SMP Tue May 11 19:21:39 MSD 2010 x86_64 GNU/Linux

e sim eu sei que está desatualizado, não tive a chance de atualizar ainda, é um pouco complicado ...

    
por The Shurrican 29.08.2010 / 15:24

4 respostas

2

Parece que algumas versões do APC (3.0.14 no meu caso) parecem ignorar o valor de apc.shm_segments e ir com o apc.shm_size, e também aceita valores maiores que o tamanho máximo permitido para cada segmento. Assim como no seu caso. Quando você aloca mais o apache 32M deve travar, pelo menos no meu caso.

Por que você não aumenta o tamanho do shmmax em /etc/sysctl.conf para 90M? Isso resolveu meus problemas ...

    
por 10.09.2010 / 00:36
0

Eu tive o mesmo problema. Você precisa definir a memória no formato de 64M, em vez de apenas o valor numérico (veja o valor padrão no manual ).:

apc.shm_size=64M
    
por 18.11.2010 / 13:02
0

Remova as bibliotecas não utilizadas do /etc/php5/apache2/conf.d. Provavelmente você não precisa de pdo.ini e pdo_mysq.ini ou mysqli.ini Isso vai economizar alguns mega de RAM

    
por 10.12.2010 / 10:57
0

você usa o apc com o mmap? então você não pode usar vários segmentos.

os 32M de / proc / sys / kernel / shmmax são o padrão debian. você pode criá-los com:

1) file: /etc/sysctl.conf
2) value: kernel.shmmax=134217728
3) save for reboots: sysctl -p

se o sistema for virtualizado - você também deve verificar os limites openvz, vmware etc.

se você não aumentar os limites do sistema - o apc está ficando sem espaço com: [apc-error] apc_mmap: o mmap falhou: não há mais espaço no dispositivo

Espero que isso ajude - já vi muitos tópicos na Internet com o mesmo problema.

    
por 04.04.2013 / 16:23