【问题标题】:CPU Usage of a query in LaravelLaravel 中查询的 CPU 使用率
【发布时间】:2021-12-29 22:27:06
【问题描述】:

我的主要目标是获取给定查询的 %CPU 使用率,以便我可以找到程序中的瓶颈。尽管我一直在使用Laravel Debugbar 来获取查询执行时间和内存使用情况等信息,但我没有看到一种方法来获得 %CPU 的利用率。谁能指出我正确的方向?

我尝试像这样使用sys_getloadavg() 函数,但我认为它不会返回我想要的结果

$cpu_load = sys_getloadavg();
Log::info("FIRST: " . $cpu_load[0] . '% / 100%'. '\n');
Log::info("FIRST RECENT: " . $cpu_load[1] . '% / 100%' . '\n');
Log::info("FIRST RECENT-ISH: " . $cpu_load[2] . '% / 100%' . '\n');

// Perform Queries here
DB::table('stems')->insert($data);

$cpu_load = sys_getloadavg();
Log::info("SECOND: " . $cpu_load[0] . '% / 100%'. '\n');
Log::info("SECOND RECENT: " . $cpu_load[1] . '% / 100%' . '\n');
Log::info("SECOND RECENT-ISH: " . $cpu_load[2] . '% / 100%' . '\n');

这是日志输出:

[2021-11-19 04:15:03] local.INFO: FIRST: 1.544921875% / 100%\n  
[2021-11-19 04:15:03] local.INFO: FIRST RECENT: 2.01220703125% / 100%\n  
[2021-11-19 04:15:03] local.INFO: FIRST RECENT-ISH: 1.78173828125% / 100%\n  

[2021-11-19 04:15:27] local.INFO: SECOND: 1.45166015625% / 100%\n  
[2021-11-19 04:15:27] local.INFO: SECOND RECENT: 1.96142578125% / 100%\n  
[2021-11-19 04:15:27] local.INFO: SECOND RECENT-ISH: 1.76806640625% / 100%\n  

请注意,第二个 %CPU 使用率小于第一个,这似乎不正确,因为我希望在执行查询后 %CPU 会增加。

【问题讨论】:

  • 结果应该是正确的,因为插入已经完成,cpu已经无事可做。您需要有一个进程在后台记录 CPU 使用情况,以便在执行期间测量 CPU 使用情况。
  • 是的,我也这么认为。我目前正在按照您的建议进行操作。但我只是想知道 Laravel 中是否有一种“本机”方式来获取 Laravel 中的 CPU 使用率以进行查询。感谢您的建议!

标签: sql laravel cpu


【解决方案1】:

在插入操作完成之前,不会执行以下代码。您可能会在插入过程中看到 CPU 峰值,而不是在插入完成之后。所以我相信结果是有效的。 要验证我上面所说的内容,您可以登录服务器机器并在插入过程中以及之后检查 CPU。如果 sys_getloadavg() 是异步的,您可能会在记录器中打印的值激增。

$cpu_load = sys_getloadavg();
Log::info("SECOND: " . $cpu_load[0] . '% / 100%'. '\n');
Log::info("SECOND RECENT: " . $cpu_load[1] . '% / 100%' . '\n');
Log::info("SECOND RECENT-ISH: " . $cpu_load[2] . '% / 100%' . '\n');

【讨论】:

    猜你喜欢
    • 2021-02-28
    • 2013-12-15
    • 2020-10-08
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多