gpt4 book ai didi

php - 为 cronjobs 记录 CPU 时间、内存峰值等

转载 作者:搜寻专家 更新时间:2023-10-31 22:14:17 24 4
gpt4 key购买 nike

我在网络服务器上有相当多的 cronjobs,它们以不同的良好程度运行。

似乎其中一些在测试数据库上需要意外数量的 CPU 周期。当然,我可以在 16:30 看到哪些作业在咆哮,但由于 cron 的数量,如果我有这样的日志,我的任务会容易得多:

Dec 19 02:13:09  /var/crons/cron1  [user cpu time used]  [system cpu time used]  [peak mem]  ..

有没有我可以在 crontab 之前添加的实用程序,如下所示:

*/6 * * * * nice -n 18 getrusage?? /usr/bin/php /var/crons/cron1 > /var/log/something

也许与 getrusage(2) 有关?

最佳答案

你实际上可以调用getrusage来自 PHP,所以也许这个想法是可行的:不是从 crontab 调用/usr/bin/php,而是在调用实际 PHP 脚本之前和之后调用一个调用 getrusage 的包装器:

#!/usr/bin/php
<?php
$fh = fopen("/var/log/cronusage.log", "a");
fputs($fh, "Executing " . $_SERVER['argv'][1] . "\n");
fputs($fh, "BEFORE\n");
foreach (getrusage() as $k => $v) {
fputs($fh, "$k -> $v\n");
}
fclose($fh);

$_SERVER['argv'][0] = '/usr/bin/php';
// FIXME Attention args not escaped possible security vuln.
system(join(' ', $_SERVER['argv']));

$fh = fopen("/var/log/cronusage.log", "a");
fputs($fh, "AFTER\n");
foreach (getrusage() as $k => $v) {
fputs($fh, "$k -> $v\n");
}
fputs($fh, "\n");
fclose($fh);
?>

未经测试,只是一个想法。

time(1) 命令也可用于此目的。

关于php - 为 cronjobs 记录 CPU 时间、内存峰值等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8564319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com