Skip to content

Instantly share code, notes, and snippets.

@davidalger
Created May 4, 2017 16:12
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save davidalger/98e2f141eae62da0b59d076a5df96ff4 to your computer and use it in GitHub Desktop.
Save davidalger/98e2f141eae62da0b59d076a5df96ff4 to your computer and use it in GitHub Desktop.
PHP Memory Usage Log

Setup memory log on php-fpm pool

  1. Added the following to /usr/local/lib/strangecode_php_memory_log.php

     <?php
     function strangecode_php_memory_log()
     {
         $current = memory_get_usage() / 1024 / 1024;
         $peak = memory_get_peak_usage() / 1024 / 1024;
         $uri = $_SERVER['REQUEST_URI'] ?? 'n/a';
         $message = sprintf("current: %6.1f MB peak: %6.1f MB uri: %s\n", $current, $peak, $uri);
         error_log($message, 3, '/var/log/php-fpm/php_memory.log');
     }
     register_shutdown_function('strangecode_php_memory_log');
    
  2. Created the log and set permissions to allow writing from anywhere

     touch /var/log/php-fpm/php_memory.log
     chmod 666 /var/log/php-fpm/php_memory.log
    
  3. Added following to /etc/php-fpm.d/www-prod.conf

     php_admin_value[auto_prepend_file] = /usr/local/lib/strangecode_php_memory_log.php
    

Log parse/sort commands

# average the memory columns across entire log file
awk '{sum+=$5} END {print sum/NR,"MB/request (peak average)"}' /var/log/php-fpm/php_memory.log
awk '{sum+=$2} END {print sum/NR,"MB/request (average)"}' /var/log/php-fpm/php_memory.log

# sort by uri
sort -t/ -k2 /var/log/php-fpm/php_memory.log | less

# descending sort by peak memory usage column
sort -rnk5 /var/log/php-fpm/php_memory.log | less

# descending sort by current (i.e. during shutdown) memory usage column
sort -rnk2 /var/log/php-fpm/php_memory.log | less
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment