Application profiling can help us determine bottlenecks and possible problems during development. But sometimes we also need to diagnose problems in production environment. Frequent performance problems are connected with functions and methods using too much memory.
If we want to track functions with too high memory consumption, we can use Memtrack extension. With this extension we can set admissible memory limit, and when some function exceed it – warning will be sent.
Memtrack is PECL extension, so installation is straightforward:
pecl install memtrackConfiguration is also easy.
extension=memtrack.so memtrack.enabled = 1 ; enabling Memtrack extension memtrack.soft_limit = int ; set memory limit for functions
More configuration options can be found here.
Example
Configuration
extension=memtrack.so memtrack.enabled = 1 memtrack.soft_limit = 1M
PHP code
function tooHighMemoryConsumption() { $someData = array(); for ($i = 0; $i < 10000; $i++) { $someData[] = sha1('a'); } return $someData; } $data = tooHighMemoryConsumption();
Generated warning
[memtrack] [pid 10408] user function tooHighMemoryConsumption() executed in PATH on line 10 allocated 1572864 bytes
In above log we can found information about process, function (name and information about type – function can be internal or user defined), file path, line and memory usage.
Nice tool, but are there any other useful features besides memory exceed warnings?
Only this one
You can set functions to ignore, but nothing more.