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

Кэш файлов APC не работает должным образом, возникает внутренняя ошибка сервера 500

У меня проблемы с правильной работой APC. Файловый кеш всегда показывает Hits = 1, а количество промахов увеличивается, но в то же время записи в кешированных файлах показывают некоторые числа в сотнях за некоторое время. Записи в пользовательском кэше работают нормально. Но почти два раза в день я продолжаю получать внутреннюю ошибку сервера, а затем мне приходится перезапускать php-fpm. Я выделил 1024M памяти и некоторые другие обычные настройки. Если у вас есть больше идей, могу ли я узнать ваш адрес электронной почты, чтобы обсудить это и отправить вам более подробную информацию.

Конфигурация APC следующая. Я пробовал ненулевые ttls и другие варианты. Кроме того, в конфигурации FastCGI - я попытался установить PHP_FCGI_CHILDREN как «0» и другие значения. Я установил PHP_FCGI_MAX_REQUESTS (12000) больше, чем значение FcgidMaxRequestsPerProcess (8000), как я обнаружил в этой статье, http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html

Но все же внутренняя ошибка сервера продолжает появляться почти два раза в день, и мне приходится перезапускать PHP-FPM.

Конфигурация APC, как показано ниже:

apc.cache_by_default    1
apc.canonicalize    1
apc.coredump_unmap  0
apc.enable_cli  0
apc.enabled 1
apc.file_md5    0
apc.file_update_protection  2
apc.filters 
apc.gc_ttl  3600
apc.include_once_override   1
apc.lazy_classes    00
apc.lazy_functions  0
apc.max_file_size   4M
apc.mmap_file_mask  /tmp/apc.mXJeFR
apc.num_files_hint  10000
apc.preload_path    
apc.report_autofilter   0
apc.rfc1867 0
apc.rfc1867_freq    0
apc.rfc1867_name    APC_UPLOAD_PROGRESS
apc.rfc1867_prefix  upload_
apc.rfc1867_ttl 3600
apc.serializer  default
apc.shm_segments    1
apc.shm_size    1024M
apc.shm_strings_buffer  4M
apc.slam_defense    1
apc.stat    1
apc.stat_ctime  0
apc.ttl 0
apc.use_request_time    1
apc.user_entries_hint   4096
apc.user_ttl    0
apc.write_lock  1

Конфигурация PHP.FastCGI выглядит следующим образом:

#!/bin/bash
PHPRC="/etc/php.ini"
PHP_FCGI_CHILDREN=16
PHP_FCGI_MAX_REQUESTS=12000
export PHPRC
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec /usr/bin/php-cgi

Я думаю, что очистка кеша - альтернатива этой проблеме. Либо перезапустите службу apache, либо добавьте что-то вроде файла apc.php и настройте cron для его очистки через определенный интервал в соответствии с вашими потребностями.

ИЛИ Альтернативно

Если у вас действуют ограничения open_dir или если это для учетной записи пользователя, вам необходимо установить каталог tmp APC относительно домашнего каталога пользователя с соответствующими разрешениями.

Просто для блага сообщества - это что-то уникальное, что вызывало у меня хаос, и я не нашел ни одного случая этой ситуации, на который раньше задавали вопросы или на которые давали ответы в моем обширном поиске по этой проблеме.

Проблема частых внутренних ошибок сервера заключалась в следующем: у меня был PHP 5.4.27, и Zend Opcache был установлен на моем сервере до того, как я перенес свой новый сайт электронной коммерции, который использовал кеш APC. Это где-то вызывало конфликт и внутреннюю ошибку сервера.

После удаления Zend Opcache Другой фактор был: apc.include_once_override был установлен в «1». Это вызывало искажения страницы, я где-то читал об этом, поэтому смог сразу же указать точку и установить «0».

Теперь отлично работает как шарм !!! и я чувствую такое облегчение после месяца битвы.