【发布时间】: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 使用率以进行查询。感谢您的建议!