在Linux下测试我的Web应用程序的负载时,我得到了以下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。新手问题是:你不认为这些与数据库相关的10ms被计算了两次吗:一次是
java
线程等待数据库处理查询,另一次是数据库本身的CPU使用率?我在这里理解错了什么吗?