2010-08-25 11 views
17

ici est un lien vers la façon dont mon APC est en cours d'exécution: [removed]Optimize APC Mise en cache

Comme vous pouvez le voir, il se remplit assez rapidement et mon cache Full Count GOES plus de 1000 parfois

Mon site utilise Wordpress.

Je remarque que chaque fois que je fais un nouveau post ou que je modifie un post, 2 choses se produisent.

1) Mémoire APC « used » remet à zéro 2) Je reçois beaucoup de fragments

J'ai essayé de donner plus de mémoire APC (512 Mo) mais il se bloque, il semble parfois 384 est le meilleur . J'ai également un travail Cron qui redémarre apache, effaçant tous les APC de fragments et de mémoire utilisée, toutes les 4 heures. Encore une fois, mon apache se bloque si APC fonctionne pendant une longue période de temps, je pense en raison de l'accumulation de fragments. Dois-je utiliser apc.Filters et filtrer certains éléments qui ne devraient pas être mis en cache?

Je suis vraiment débutant dans ce genre de choses, donc si quelqu'un peut expliquer avec des instructions complètes, merci beaucoup !!!

Répondre

10

L'APC ttl devrait prendre soin de l'accumulation de fragments. Je l'ai mis habituellement à 7200. Je suis en cours d'exécution sur un petit VPS avec WordPress et mes paramètres sont:

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 

Vous obtiendrez également beaucoup plus en tirer profit en utilisant WordPress est construit dans le cache d'objets et Mark Jaquith a écrit un très bon drop in plugin qui devrait également aider avec certains de vos problèmes de fragmentation lors de l'enregistrement ou de la modification d'un message.

41

Je travaille comme les systèmes Linux Admin, le serveur exécute 5 wordpress différent WordPress installe. Si vous n'en utilisez qu'un seul, je commenterai les configurations à prendre en compte.

Versions APC/PHP, 3.1.9/5.3.7

Voici mon apc.conf complet,

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, votre configuration n'est pas optimale dans quelques aspects.

1. apc.shm_segments = 3

Si vous exécutez un Distro Linux moderne, votre SHM devrait être sufficiantly assez grand. S'il est trop petit, recherchez comment définir les entrées de sysctl.conf. Vous pouvez vérifier comme ceci.

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

Exception lors de l'exécution sur certains hôtes BSD, ou autres Unix, ou gérés que vous ne contrôlez pas. Il y a des inconvénients à ne pas avoir un segment contigu, lisez les détails d'APC pour cette information.

2. apc.enable_cli = 1

BAD BAD BAD, ceci est pour debug seulement! Chaque fois que vous exécutez php-cli, le cache APC est effacé.

3. apc.max_file_size = 10M

inutiles et ridicules! Si vous aviez un fichier aussi gros, il mangerait 1/3 de ce petit SHM de 32M. Même si vous spécifiez 3, ils ne se comportent pas comme un gros segment en trois parties. Peu importe, WP n'a même pas de fichiers PHP uniques, même proches de cette taille.

'J'espère avoir aidé les gens avec leur apc.conf.

+1

oui, vous avez aidé! – markus

+1

@TechZilla, J'utilise le framework Yii et il utilise beaucoup le chargement paresseux des classes, alors devrais-je activer apc.lazy_classes et apc.lazy_functions, cela peut-il affecter autre chose? –

+2

@Uday Sawant: chargement paresseux pour APC est différent de chargement paresseux dans le cadre Yii. Yii a été écrit spécifiquement de la manière «paresseuse», alors qu'avec APC il s'agit de charger «paresseux» généralement. Essentiellement avec Yii, je garderais toujours ces décélérations comme '0'. Le chargement manuel paresseux est susceptible de fonctionner le mieux sans interférence externe. Je tiens également à mentionner que les décélérations d'APC sont encore assez récentes, et nécessitent plus de tests/stats/maturité avant d'envisager de mettre '1'. – TechZilla

Questions connexes