簡體   English   中英

Java + JDBC的CPU使用率

[英]CPU usage of Java + JDBC

在負載下測試我的webapp時,我得到了Linux下的top摘錄:

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
3964 nobody    20   0 4965m 622m 6048 S  8.5 11.0   6:02.49 java 
1985 mysql     20   0  294m 125m 3804 S  2.1  2.2   0:05.39 /usr/sbin/mysqld

我需要對java的%CPU列進行解釋。 據我了解,在web請求期間, java的一個線程正在執行一些純Java邏輯,消耗一些CPU時間(讓它為5ms)。 然后它通過JDBC連接到數據庫,發送一些sql查詢並等待,例如10ms ,以進行響應。 這些10ms顯然被計為/usr/sbin/mysqld CPU使用率。 然后java線程恢復它的操作並完成,消耗另外20ms並且總計執行時間為5 + 10 + 20 = 30ms。

而新手的問題是:難道你不認為這些與db相關的10ms被計算兩次:一次是java線程等待db處理查詢而第二次作為數據庫CPU使用本身? 我在這里不明白什么?

當進程只是在套接字上等待時,通常不會使用大量的CPU。 基本上,內核知道它處於等待狀態並且不會安排它運行 - 除了信號處理之類的小事情,例如可以用來定期運行垃圾收集器。

(好吧,如果要收集大量垃圾,那么“小東西”可能不會那么少。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM