Назад | Перейти на главную страницу

apc apc.shm_segments проигнорировал apc.shm_size, который ведет себя странно в apache2

это текущий apc.ini

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

что дает мне

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

самое забавное, что согласно этому должно быть возможно только 32M ..

cat /proc/sys/kernel/shmmax
33554432

если я увеличиваю сегменты, это просто не влияет, но отображается в apc.php, если я увеличиваю shm_size выше 64 (независимо от настройки сегментов), я получаю следующую ошибку:

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

Мне нужно около 90 МБ opcache, поэтому, насколько я понимаю, с учетом настройки shmmax я бы выбрал сегменты 2x32M ...

кто-нибудь может придумать причину, по которой несколько сегментов не работают? любая идея, почему 64M работает, хотя предел shmmax составляет 32M?

APC Version 3.0.19
PHP Version 5.2.0-8+etch16

и система (ленни) ...

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

и да, я знаю, что он устарел, у меня еще не было возможности обновить, это немного сложно ...

Похоже, что некоторые версии APC (3.0.14 в моем случае) игнорируют значение apc.shm_segments и идут с apc.shm_size, а также принимает значения, превышающие максимально допустимый размер для каждого сегмента. Как и в вашем случае. Когда вы выделяете больше, 32M apache должен зависать, по крайней мере, в моем случае.

Почему бы вам просто не увеличить размер shmmax в /etc/sysctl.conf до 90M? Это решило мои проблемы ...

Удалите неиспользуемые библиотеки из /etc/php5/apache2/conf.d. Возможно, вам не нужны pdo.ini и pdo_mysq.ini или mysqli.ini. Это сэкономит немного Mega of Ram.

Я была такая же проблема. Вам необходимо определить память в формате 64M, а не только числовое значение (см. Значение по умолчанию в руководство) .:

apc.shm_size=64M

вы используете apc с mmap? тогда вы не можете использовать несколько сегментов.

32 МБ / proc / sys / kernel / shmmax по умолчанию используются в Debian. вы можете вырастить их с помощью:

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

если система виртуализирована - вам также следует проверить лимиты openvz, vmware и т. д.

если вы не повышаете системные ограничения - apc не хватает места с: [apc-error] apc_mmap: mmap failed: на устройстве не осталось места

Надеюсь, это поможет - в Интернете я видел множество тем с той же проблемой.