如何计算每个HTTP请求的CPU使用率[关闭]

问题描述 投票:-3回答:1

我想获取发送到本地Apache服务器的每个单独请求的CPU使用率。我使用top来捕获CPU使用率,但它并不可靠,因为它大多数时候都会捕获0作为CPU使用率。我检查过类似psutil等的实用程序,但它们不起作用?

无论如何(Go中的一些代码或包)在这方面有帮助吗? P.S对我来说最好的方法是如果我在access.log文件中无法获得CPU使用率?

apache go cpu-usage
1个回答
3
投票

百分比(CPU负载) - 无论您如何收集它 - 将始终是一个时间点样本。它对于确定哪个进程在给定时刻使用更多CPU非常有用,它对于分析程序以查看哪些部分在执行过程中使用更大比例的CPU非常有用,但是知道多少CPU是完全没用的。请求消耗;根本无法用CPU%来衡量。即使你设法计算它,“一个请求使用5%的CPU”是没有意义的 - 它是否使用5%的纳秒?一小时?您想要测量的是这样的事情是CPU时间:您的过程主动使用CPU的时间。

CPU负载基本上计算如下:在最后一个采样周期(例如,1秒)中,CPU执行此过程的指令的时间是多少。 CPU时间是该指标的核心:CPU花费多长时间执行此过程的指令。这是一个可以有意义地用于查找分析目标以进行优化,容量规划,性能基准测试等的度量标准。

获取该信息的最快方法是重新启动服务,生成已知级别的负载(例如,100k请求),检查进程的CPU时间(例如,如top中所示),并将其除以请求数。这会告诉你请求消耗多少CPU时间。

© www.soinside.com 2019 - 2024. All rights reserved.