Monitoring využití paměti

Cars Tomas
Člen | 43
+
+1
-

Ahoj,
potřeboval bych poradit jakým způsobem monitorovat využití paměti php. Mám aplikace postavenou na Nette/Doctrine a spouštím příkaz přes konzoli a něco mi tam žere paměť tak, že to po chvíli vyhodí:
Error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 64 bytes) in

Potřeboval bych zjistit, která proměnná, popř. co a kde se mi plní tak, že to po chvíli spadne.
Nechci to řešit zatím navyšováním paměťového limit.

Moc děkuji za každou radu.

Roman Halaxa
Člen | 60
+
0
-

Možná ti to vůbec nepomůže a problém je někde jinde ale tohle se mi stávalo když jsem se pokoušel dumpnout nějakou proměnnou a měl nastavený moc vysoký maxDepth u Tracy.

V config.neon

tracy:
	maxDepth: Tohle číslo bylo moc velké (teď tam mám 4)

Editoval Roman Halaxa (15. 2. 2019 14:48)

Phalanx
Člen | 310
+
+2
-

@CarsTomas Na problematická místa si zkus vypsat využití paměti

<?php
public function logMemoryUsage()
{
	$memory = memory_get_usage();
	$unit = array('b','kb','mb','gb','tb','pb');
    $memory = @round($size/pow(1024,($i=floor(log($size,1024)))), 2).' '.$unit[$i];

	\Tracy\Debugger::log("Memory {$memory}", ILogger::INFO);
}


public function doSomething()
{
	$this->logMemoryUsage();
	// some logic
	$this->logMemoryUsage();
}

?>
Martk
Člen | 656
+
0
-

Nevím o žádném nástroji. Ale co mě tak napadá, kdy se mi to stává, tak je rekurze, manipulace s obrázky a u doctrine moc entit v paměti, dá se vyřešit dávkováním a voláním $em->clear()

Jan Mikeš
Člen | 771
+
0
-

Urcite koukni na Blackfire, pomohl mi vyresit uz spoustu podobnych problemovych situaci :-)