如何计算每个HTTP请求的CPU使用率

时间:2019-04-03 12:31:08

标签: apache go cpu-usage

我想获取发送到本地Apache服务器的每个请求的CPU使用率。我使用top来捕获CPU使用率,但是它不是那么可靠,因为大多数情况下它捕获0作为CPU使用率。我已经检查了诸如psutil等实用程序,但是它们无法正常工作?

在这方面是否有帮助(Go中的某些代码或软件包)? 附言:对我来说最好的方法是在access.log文件中找不到CPU使用率?

1 个答案:

答案 0 :(得分:3)

百分比(CPU 负载)-无论您如何收集-都会始终成为时间点样本。这对于确定给定时刻哪个进程正在使用更多的CPU很有用,对程序进行概要分析以查看在执行过程中哪些部分使用更多的CPU很有用,但是对于知道一个CPU占用了多少CPU完全没有用。请求消耗;根本无法以CPU%衡量。即使您设法计算出它,“一个请求使用5%CPU”也是没有意义的-它是否在一个纳秒内使用5%?一小时?您想要测量的是CPU 时间:您的进程有效使用CPU的时间。

CPU负载的基本计算方法是:在最后一个采样周期(例如1秒)中,CPU在该过程中执行指令的时间为多少。 CPU时间是该指标的核心:CPU花了多少时间来执行该过程的指令。您可以有意义地使用该指标来找到性能优化,性能规划,性能基准测试等性能分析目标。

获取该信息的最快方法是重新启动服务,生成已知的负载水平(例如10万个请求),检查进程的CPU 时间(例如,如{ {1}}),然后将其除以请求计数。那会告诉您请求消耗了多少CPU时间。

相关问题