如何获取通过 symfony 进程运行的脚本的内存使用情况?

Posted

技术标签:

【中文标题】如何获取通过 symfony 进程运行的脚本的内存使用情况?【英文标题】:How to get the memory usage of a script that runs via symfony-process? 【发布时间】:2021-09-15 07:10:42 【问题描述】:

所以,这是这个 wep 应用程序,它愉快地运行 python 脚本,通过消息排队,带有 Symfony 进程组件:

$stopwatch = new Stopwatch();
$stopwatch->start('cmd');

$process = new Process($somePythonCmd, null, ['PYENV_VERSION' => 'unicornenv']);
$process->start();
$process->wait();

$event = $stopwatch->stop('cmd');
$metrics = [
    'duration' => Helper::formatTime($event->getDuration() / 1000),
    'memory' => Helper::formatMemory($event->getMemory())
];

我认为这是衡量 php 进程本身的内存消耗,对吧?

有没有办法测量python脚本的实际内存使用情况?

【问题讨论】:

【参考方案1】:

某种解决方法:

...但您可以在命令前加上 /usr/bin/time, 这将为您提供流程 errorOutput 中的指标

$cmd = [
            '/usr/bin/time',
            'python',
            'script',
        ];

$process = new Process($cmd, null, ['PYENV_VERSION' => 'someenv']);
$process->start();
$process->wait();

if ($process->isSuccessful()) 
    $metrics = $process->getErrorOutput();
    //14.60user 0.65system 0:09.54elapsed 159%CPU (0avgtext+0avgdata 1292616maxresident)k 24inputs+72outputs (0major+346624minor)pagefaults 0swaps

【讨论】:

以上是关于如何获取通过 symfony 进程运行的脚本的内存使用情况?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用脚本通过其服务名称获取进程ID到变量

如何通过bat脚本与zabbix_sender实时监控应用进程是否正在运行

如何从 Symfony 进程运行 vi?

C#获取特定进程CPU和内存使用率

java 如何获得一个进程的内存使用情况,cpu运行的时间

Linux下实现脚本监测特定进程占用内存情况