如何判断是 CPU 密集还是 IO 密集型任务?
判断标准:
-
CPU密集型任务:
-
特点:任务耗时主要在计算(如算法运算、数据压缩、加密解密)。
-
判断方法:
-
线程CPU占用高(接近100%),且很少阻塞(如无网络、磁盘I/O等待)。
-
工具:
top
(Linux)、jstack
、VisualVM
查看线程状态是否为RUNNABLE
且无WAITING
。
-
-
-
I/O密集型任务:
-
特点:任务耗时主要在等待(如数据库查询、HTTP请求、文件读写)。
-
判断方法:
-
线程CPU占用低,大量时间处于
WAITING
/BLOCKED
状态(通过jstack
或Arthas
查看)。 -
系统监控显示高I/O等待(
%iowait
高,Linux的vmstat
或iostat
)。
-
-
-
混合型任务:
-
若两者耗时接近,需通过性能分析工具(如
Profiler
)统计CPU和I/O时间占比,再按公式调整线程数。
-