Подтвердить что ты не робот

Оптимизация кэширования APC

Вот ссылка на то, как работает мой APC: [удален]

Как вы можете видеть, он заполняется довольно быстро, и мой кеш-полный счет больше 1000 раз

Мой сайт использует Wordpress.

Я замечаю, что каждый раз, когда я делаю новое сообщение или редактирую сообщение, происходят две вещи.

1) Память APC Память "USED" 2) Я получаю много фрагментов

Я попытался предоставить больше памяти APC (512 МБ), но потом он иногда падает, кажется, что лучше всего 384. У меня также есть задание Cron, которое перезапускает apache, очищая все APC фрагментов и используемую память каждые 4 часа. Опять же, мой apache падает, если APC работает в течение длительного периода времени, я думаю, из-за наращивания фрагмента.

Должен ли я использовать apc.Filters и отфильтровывать некоторые вещи, которые нельзя кэшировать?

Я действительно новичок в таких вещах, поэтому, если кто-то может объяснить с полными инструкциями, спасибо вам большое!

4b9b3361

Ответ 1

APC ttl должен заботиться о создании фрагментов. Я обычно устанавливаю его на 7200. Я запускаю его на небольшом VPS с WordPress, и мои настройки:

apc.enabled=1
apc.shm_segments=3
apc.shm_size=32
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=2048
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.max_file_size=10M

Вы также получите гораздо больше преимуществ от него, используя WordPress, встроенный в кеш-объект, и Марк Жаквит написал действительно хороший drop in plugin, который также должны помочь с некоторыми вашими проблемами фрагментации при сохранении или редактировании сообщения.

Ответ 2

Я работаю администратором Linux Systems, сервер wordpress запускает 5 различных установок WordPress. Если вы используете только один, я прокомментирую рассмотренные конфигурации.

Версии APC/PHP, 3.1.9/5.3.7

Вот мой полный apc.conf,

apc.enabled=1
apc.shm_segments=1

; I would try 32M per WP install, go from there
apc.shm_size=128M

; Relative to approx cached PHP files,
apc.num_files_hint=512

; Relative to approx WP size W/ APC Object Cache Backend, 
apc.user_entries_hint=4096

apc.ttl=7200
apc.use_request_time=1
apc.user_ttl=7200
apc.gc_ttl=3600
apc.cache_by_default=1
apc.filters
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.file_update_protection=2
apc.enable_cli=0
apc.max_file_size=2M

;This should be used when you are finished with PHP file changes.
;As you must clear the APC cache to recompile already cached files.
;If you are still developing, set this to 1.
apc.stat=0

apc.stat_ctime=0
apc.canonicalize=1
apc.write_lock=1
apc.report_autofilter=0
apc.rfc1867=0
apc.rfc1867_prefix =upload_
apc.rfc1867_name=APC_UPLOAD_PROGRESS
apc.rfc1867_freq=0
apc.rfc1867_ttl=3600

;This MUST be 0, WP can have errors otherwise!
apc.include_once_override=0

apc.lazy_classes=0
apc.lazy_functions=0
apc.coredump_unmap=0
apc.file_md5=0
apc.preload_path

@Chris_O, ваша конфигурация не является оптимальной в нескольких аспектах.

1. apc.shm_segments = 3

Если вы используете современное Linux Distro, ваш SHM должен быть достаточно большим. Если это слишком маленький поиск, как установить записи sysctl.conf, вы можете проверить это.

#Check Max Segment size
cat /proc/sys/kernel/shmmax

Исключение при запуске на определенных BSD или других Unix, или управляемых хостах, которые вы не контролируете. Есть недостатки в том, что у вас нет смежного сегмента, прочтите данные APC для этой информации.

2. apc.enable_cli = 1

BAD BAD BAD, это только для отладки! Каждый раз, когда вы запускаете php-cli, он очищает кеш APC.

3. apc.max_file_size = 10M

Ненужные и смешные! Если бы у вас был файл большой, он бы съел 1/3 из этого небольшого 32M SHM. Несмотря на то, что вы указываете 3, они не просто действуют как один большой сегмент из трех частей. Независимо от того, что WP даже не имеет отдельных файлов PHP даже близко к этому размеру.

'надеюсь, что я помог людям с их apc.conf.

Ответ 3

Вам действительно нужно установить apc.stat = 0 на ваш производственный сервер, и это предотвратит фактическое переключение APC в IO, чтобы проверить, был ли файл изменен.

Сначала проверьте документацию: http://php.net/manual/en/apc.configuration.php