& quot; вызов неопределенного метода & quot; после перезагрузки apache с использованием кеша apc opcode

мы используем php5.4, apc 3.1.13 с apache2 и mod_php, и время от времени возникает проблема, связанная с тем, что кэш кода операции apc, похоже, забывает кэшированные данные после перезагрузки apache (например, после logrotate). Это иногда приводит к фатальным ошибкам с «Вызовом неопределенного метода». Мы никоим образом не изменяем файлы до того, как произойдет ошибка, и после перезапуска apache проблема исчезнет.

Когда мы выпускаем новую версию нашего кода, мы имеем следующую и текущую версию нашего приложения в файловой системе и переключаем их посредством отмены связи текущей и символической ссылки новой версии. Я думаю, что таким образом apc добавляет новые коды операций (из другого места в файловой системе) в кэш и не удаляет старые.

После некоторых тестов на тестовой системе я вижу, что apc очищает кеш после перезагрузки и перезапуска apache. Проблемы «Вызов неопределенного метода» почему-то звучат как ошибка фрагментации, но я действительно не понимаю этого, потому что кэш должен быть пустым из-за перезагрузки. Я нашел некоторую информацию об ошибке в более старой версии apc, которую нужно исправлять годами.

Мне очень трудно догадаться, после скольких перезагрузок apache и applucation релизы apc заканчивается таким поврежденным кешем, потому что я не вижу паттерна. Но это определенно как-то связано с перезагрузкой apache.

Вот наш apc.ini:

apc.enabled=1
apc.shm_size=512M
apc.num_files_hint=10000
apc.user_entries_hint=10000
apc.max_file_size=5M
apc.stat=1
apc.optimization=0
apc.shm_segments=1
apc.enable_cli=0
apc.cache_by_default=1
apc.include_once_override=0

Я вижу, что максимальная общая память систем (debian) установлена ​​в 32 МБ.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]