繁体   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