我想在Tomcat服务器中部署视频播放器Web应用程序,并希望找出每个用户请求的CPU负载以限制用户数量。我能够找出CPU负载,但是,我不知道如何计算每个请求的CPU负载。任何人都可以告诉我们,如果我们有任何开源API或任何其他想法将不胜感激吗?
我使用Adobe Flex开发了Web应用程序并部署在Apache Tomcat Server中。
答案 0 :(得分:0)
我会尝试以下方法:
在Web应用程序中,您可以计算每个请求(线程)的CPU使用率,以便在进入servlet时将CPU线程总时间提取到离开servlet时的总CPU线程时间。
这样的事情:
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ...
{
long iniCpuTime, endCpuTime, iniTs, endTs, threadId;
ThreadMXBean mxBean = ManagementFactory.getThreadMXBean();
if (mxBean.isThreadCpuTimeSupported()) {
threadId = Thread.currentThread().getId();
iniTs = System.currentTimeMillis();
iniCpuTime = mxBean.getThreadCpuTime(threadId);
}
// Business logic
....
if (mxBean.isThreadCpuTimeSupported()) {
endTs = System.currentTimeMillis();
endCpuTime = mxBean.getThreadCpuTime(threadId);
float cpu = (endCpuTime-iniCpuTime)/(float)((endTs-iniTs)*1000000);
System.out.println("Request CPU usage (%): "+(cpu*100));
}
}
但请注意,如果在servlet中执行的业务逻辑不够严重,由于不确定性原则,您可能会得到奇怪的结果。