web-dev-qa-db-fra.com

Meilleurs paramètres APC pour réduire le temps d'exécution des pages

J'ai Drupal 7, apc avec php-fpm et Apache derrière le vernis et 512 Mo de RAM.

Je mesure le temps d'exécution des pages avec le module devel.

Le temps de requête de la base de données est faible (62 ms) par rapport au temps d'exécution de la page qui est de 854 ms. Cela signifie qu'il y a un problème avec PHP et les paramètres APC.

Mes paramètres actuels sont juste

apc.shm_size = 64
apc.stat=1 

Comment puis-je m'améliorer?

Quels sont les meilleurs paramètres pour Drupal compte tenu de la configuration ci-dessus?

Merci

15
john

Nous fonctionnons dans un environnement SVN Push, nous ne nettoyons donc le cache de fichiers apc qu'avec un script.

Paramètres APC:

apc.ttl=604800
apc.user_ttl=3600
apc.shm_size=192M
apc.include_once_override=1
auto_globals_jit=Off
apc.num_files_hint = 2048

apc.stat_ctime = 0
apc.file_update_protection = 2
apc.stat = 0

Script PHP:

<?php
$return = apc_clear_cache('opcode');
echo var_export($return);

604800 = 1 semaine.

Après cela, faire fonctionner xdebug/xhprof et faire un cache Grind du site devrait vous faire savoir ce qui ralentit le site. En bref, l'analyse de la sortie Grind du cache est le meilleur moyen d'accélérer Drupal. Ci-dessous, je liste les correctifs et modules que nous utilisons pour l'accélérer; dans votre cas, ce sera probablement différent.

Réponse spécifique à Drupal 6 ci-dessous

Une fois que vous avez dépassé ce point et que vous vous rendez compte que l'APC ne vous donnera pas ce que vous recherchez, passez à pressflow et tournez ces correctifs:

Essayez également certains de ces modules car ils ont considérablement amélioré la vitesse de nos sites:

12
mikeytown2

C'est l'un de ces "combien de temps est un morceau de questions de chaîne".

Ce qui est bon pour un site à volume élevé peut ne pas être le même pour un site à faible volume avec beaucoup de modules, et peut ne pas être le même pour un site à volume moyen avec seulement quelques modules activés. D'autres sites exécutés sur le serveur peuvent également consommer de la mémoire dont dispose APC.

Mon point de départ est

apc.enabled=1
apc.shm_segments=1
apc.shm_size=64
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.rfc1867=1

J'ajuste ensuite les paramètres du serveur, mais encore une fois, il n'y a pas de taille unique pour tous les paramètres.

Trouvez apc.php (probablement situé dans /usr/share/pear/apc.php) et installez-le dans DOCROOT pour votre installation Drupal. Verrouillez-le sur votre adresse IP via la configuration Apache Modifiez le nom d'utilisateur/mot de passe à l'intérieur, puis accédez-y. Vous verrez alors vos statistiques APC.

Reconfigurez le paramètre shm_size pour minimiser les erreurs de cache. Idéalement, vous voulez lui donner juste assez de mémoire pour ne jamais manquer de cache pour un fichier, ainsi que de la mémoire supplémentaire pour le cache utilisateur APC.

Optimiser TTL pour éviter le barattage du cache. Si vous ne modifiez pas les fichiers, vous pouvez augmenter ce nombre.

enable_cli est pratique lorsque vous utilisez beaucoup drush, de sorte que drush utilise les fichiers mis en cache d'APC.

rfc1867 est pratique pour les téléchargements de fichiers.

J'ai également remarqué le php-fpm dans le titre. Cela complique les choses et dépasse vraiment la portée de Drupal Answers. Vous pouvez obtenir de meilleures réponses à Server Fault , comme la plupart des paramètres de configuration du système ne le font pas). se rapportent à Drupal directement.

3
mpdonadio

APC améliore simplement le chargement et l'analyse de PHP. Une grande partie est également le temps d'exécution lui-même. De nombreux facteurs peuvent augmenter le temps d'exécution, y compris les bogues (en particulier les bogues liés au cache), internes les frais généraux (par exemple drupal_alter (), module_implements ()) et ainsi de suite.

Comme vous l'avez demandé et déjà suggéré par mikeytown2, j'utiliserais xhprof (je le préfère à xdebug de nos jours car il fournit un accès direct et rapide au résultat et ne nécessite aucun outil supplémentaire) pour savoir où se trouvent vos goulots d'étranglement.

J'ai récemment écrit deux articles de blog sur en utilisant xhprof dans Drupal et goulots d'étranglement typiques , qui pourraient vous intéresser.

2
Berdir