Je suis en train de configurer APC (v 3.1.9) sur une installation WordPress à fort trafic sur CentOS 6.0 64 bit.
J'ai résolu la plupart des problèmes liés à l'APC, mais il y a encore quelque chose qui ne va pas. Quels que soient les paramètres que je modifie, APC ne met jamais en cache plus de 32 Mo. J'essaie de le faire passer à 256 Mo. 32 Mo est une valeur par défaut pour apc.shm_size, je me demande donc si elle n'est pas bloquée à ce niveau.
J'ai effectué les opérations suivantes
echo '2147483648' > /proc/sys/kernel/shmmax
pour augmenter la mémoire partagée de mon système à 2G (la moitié de ma boîte 4G). Puis j'ai lancé
ipcs -lm
qui renvoie
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 2097152
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1
J'ai également apporté un changement dans
/etc/sysctl.conf
puis a couru
sysctl -p
pour que les paramètres soient conservés sur le serveur. J'ai redémarré, aussi, pour faire bonne mesure.
Dans mes paramètres d'APC, j'ai activé mmap (ce qui arrive par défaut dans les versions récentes d'APC). php.ini ressemble à ça :
apc.stat=0
apc.shm_size="256M"
apc.max_file_size="10M"
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.ttl="7200"
Je suis conscient que le mode mmap ignorera les références à apc.shm_segments, donc je l'ai laissé de côté avec la valeur par défaut 1.
phpinfo() indique ce qui suit à propos d'APC :
Version 3.1.9
APC Debugging Disabled
MMAP Support Enabled
MMAP File Mask /tmp/apc.bPS7rB
Locking type pthread mutex Locks
Serialization Support php
Revision $Revision: 308812 $
Build Date Oct 11 2011 22:55:02
Directive Local Value
apc.cache_by_default On
apc.canonicalize O
apc.coredump_unmap Off
apc.enable_cli Off
apc.enabled On On
apc.file_md5 Off
apc.file_update_protection 2
apc.filters no value
apc.gc_ttl 3600
apc.include_once_override Off
apc.lazy_classes Off
apc.lazy_functions Off
apc.max_file_size 10M
apc.mmap_file_mask /tmp/apc.bPS7rB
apc.num_files_hint 1000
apc.preload_path no value
apc.report_autofilter Off
apc.rfc1867 Off
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 256M
apc.slam_defense On
apc.stat Off
apc.stat_ctime Off
apc.ttl 7200
apc.use_request_time On
apc.user_entries_hint 4096
apc.user_ttl 0
apc.write_lock On
apc.php révèle le graphique suivant, quelle que soit la durée d'exécution du serveur (la taille du cache fluctue et se maintient juste en dessous de 32 Mo.
Voir l'image http://i.stack.imgur.com/2bwMa.png
Vous pouvez voir que le cache essaie d'allouer 256 Mo, mais que la partie marron du gâteau continue d'être recyclée à 32 Mo. Ceci est confirmé par le fait qu'en rafraîchissant la page apc.php, le nombre de fichiers mis en cache varie (ce qui implique que le cache ne conserve pas tous ses fichiers).
Quelqu'un a-t-il une idée de la manière dont on peut faire en sorte qu'APC utilise plus de 32 Mo pour sa taille de cache ?
**Notez que le même comportement se produit pour eaccelerator, xcache, et APC. J'ai lu ici :
http://www.litespeedtech.com/support/forum/archive/index.php/t-5072.html
que suEXEC pourrait causer ce problème.
0 votes
C'est peut-être un bug. Simplifiez les paramètres de votre php.ini APC et voyez si cela fait une différence. Par exemple, vous devez probablement spécifier uniquement apc.shm_size=256M.
0 votes
Cela fait une différence dans la mémoire disponible, mais ne dépasse jamais 32 Mo. Cela a été le cas pour eaccelerator, xcache, et APC. Est-ce que suEXEC pourrait être le coupable ici ?
0 votes
J'ai les mêmes configurations et le même problème Existe-t-il une solution ?