1
我想在Tomcat服務器中部署視頻播放器Web應用程序,並希望找出每個用戶請求的CPU負載以限制用戶數量。我能夠找出CPU負載,但是,我不確定如何計算每個請求的CPU負載。任何人都可以讓我知道,如果我們有任何開源API或任何其他想法將不勝感激?如何使用Java查找CPU負載和應用程序負載?
我使用Adobe Flex開發了Web應用程序,並部署在Apache Tomcat服務器中。
我想在Tomcat服務器中部署視頻播放器Web應用程序,並希望找出每個用戶請求的CPU負載以限制用戶數量。我能夠找出CPU負載,但是,我不確定如何計算每個請求的CPU負載。任何人都可以讓我知道,如果我們有任何開源API或任何其他想法將不勝感激?如何使用Java查找CPU負載和應用程序負載?
我使用Adobe Flex開發了Web應用程序,並部署在Apache Tomcat服務器中。
我會嘗試以下方法:在離開Servlet時
在Web應用程序,你可以計算出每個請求sustracting進入servlet來總的CPU線程時候總CPU線程時間,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中執行業務邏輯是不夠重,由於不確定性原理,你可以得到奇怪的結果。
查看位於JDK_INSTALL_PATH/demo/management/JTop的jtop demo。我認爲這正是你需要的。 – SirVaulterScoff
另一種方法是使用\t \t ManagementFactory.getOperatingSystemMXBean()。getSystemLoadAverage(); – SirVaulterScoff