I need to figure out how much RAM/CPU a particular Laravel app is using, but so far the current code shows the entire system's usage.
How can I, instead, check how much RAM/CPU only one Laravel app is using? (kind of how the Windows task manager shows each program's CPU/RAM usage- but for web apps instead [particularly Laravel, but vanilla PHP solutions are welcome])
Current code below...
web.php:
...
Route::get('/details', function () {
//RAM usage
$free = shell_exec('free');
$free = (string) trim($free);
$free_arr = explode("\n", $free);
$mem = explode(" ", $free_arr[1]);
$mem = array_filter($mem);
$mem = array_merge($mem);
$usedmem = $mem[2];
$usedmemInGB = number_format($usedmem / 1048576, 2) . ' GB';
$memory1 = $mem[2] / $mem[1] * 100;
$memory = round($memory1) . '%';
$fh = fopen('/proc/meminfo', 'r');
$mem = 0;
while ($line = fgets($fh)) {
$pieces = array();
if (preg_match('/^MemTotal:\s+(\d+)\skB$/', $line, $pieces)) {
$mem = $pieces[1];
break;
}
}
fclose($fh);
$totalram = number_format($mem / 1048576, 2) . ' GB';
//cpu usage
$cpu_load = sys_getloadavg();
$load = $cpu_load[0] . '% / 100%';
return view('details',compact('memory','totalram','usedmemInGB','load'));
});
...
details.blade.php:
<html>
<head>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="col-sm-6 col-md-3">
<h2 class="no-margin text-semibold">Current RAM Usage</h2>
<div class="progress progress-micro mb-10">
<div class="progress-bar bg-indigo-400" style="width: {{$memory}}">
<span class="sr-only">{{$memory}}</span>
</div>
</div>
<span class="pull-right">{{$usedmemInGB}} / {{$totalram}} ({{$memory}})</span>
</div>
<div class="col-sm-6 col-md-3">
<h2 class="no-margin text-semibold">Current CPU Usage</h2>
<div class="progress progress-micro mb-10">
<div class="progress-bar bg-indigo-400" style="width: {{$load}}">
<span class="sr-only">{{$load}}</span>
</div>
</div>
<span class="pull-right">{{$load}}</span>
</div>
</body>
</html>