Gestion de la mémoire, Module memory_profiler et syslog

 

Module memory_profiler

https://www.drupal.org/project/memory_profiler pour drupal 6 et 7. Sans devel, log les pics de mémoire dans watchdog bien pour la prod.

Voir cet article, qui parle de ce module : http://www.pixelite.co.nz/article/how-to-profile-php-memory-with-drupal/

Activer syslog (core) : drush en syslog memory_profiler 
pour regarder une simple requete :  grep "memory profiler" drupal-watchdog.log | head -n 1
         ou (juste URL et mémoire php) grep "memory profiler" drupal-watchdog.log | head -n 1 | awk -F'|' -v OFS=',' '{print $5, $9}'
requetes selon mémoire:                     grep "memory profiler" drupal-watchdog.log | awk -F'|' -v OFS=',' '{print $5, $9}' | sed 's/ MB.*//' | sort -t, -k+2 -n -r | head -n 20

 

Syslog

configuration syslog

Conf Syslog à /etc/syslog.conf (par défaut ils vont à /var/log/messages) - cf https://www.drupal.org/documentation/modules/syslog

Conf à admin/config/development/logging :

  • modifier le nom du site (remplacer "drupal" à "Identité Syslog" par le nom du site). Utiliser par ex Log0 pour lui, log1 pour un autre....
  • Log 0 à 7

Pour avoir le log dans un fichier séparé - local0 correspond au niveau de log (cf admin/config/development/logging)

Ajouter dans  /etc/rsyslog.conf  tout en bas : local0.* /var/log/drupal.log
sudo service rsyslog restart

tail -f /var/log/drupal.log
ou mieux :
grep "memory profiler" /var/log/xaou.log | head -n 1

Puis désactiver dblog : drush dis dblog

Voir aussi https://amme86.wordpress.com/2015/01/03/drupal-logging-to-rsyslog/ et http://manpages.ubuntu.com/manpages/trusty/man5/rsyslog.conf.5.html

Utilisation

grep "memory profiler" /var/log/xaou.log | head -n 1

le format vient de (drush vget syslog_format) : !base_url|!timestamp|!type|!ip|!request_uri|!referer|!uid|!link|!message
après le lien demandé, on a le referer, l'ID du user

Voir URL et mémoire PHP : grep "memory profiler" /var/log/xaou.log | head -n 1| awk -F'|' -v OFS=',' '{print $5, $9}'

Créer un CSV : echo "request_uri,max_memory" > /tmp/memory.csv && grep "memory profiler" /var/log/xaou.log | awk -F'|' -v OFS=',' '{print $5, $9}' | sed 's/ MB.*//' >> /tmp/memory.csv

 


Combien le core requiert ?

drupal 7 core: 32 Mo et la v6 prend 16 Mo.

logo drush