社区
Java SE
帖子详情
如何统计一段Java业务代码的CPU执行时间和IO执行时间
catoop
优质创作者: Java技术领域
领域专家: 后端开发技术领域
2019-08-03 06:02:00
如图
:
问题
:
业务代码中,总的时间消耗包含CPU时间 和 IO 时间。
如何通过代码或者其他工具,统计任意一段业务代码的CPU时间和IO时间。
例如针对上面图中的business方法,可以获得CPU累计消耗时间109ms和剩余的IO累计时间消耗。
假设业务方法是不透明的,只能调用,那么调用方如何统计目标方法的这2个时间消耗。
(可以使用代码,或者工具)
请教各位大神!!!
...全文
1474
6
打赏
收藏
如何统计一段Java业务代码的CPU执行时间和IO执行时间
如图: 问题: 业务代码中,总的时间消耗包含CPU时间 和 IO 时间。 如何通过代码或者其他工具,统计任意一段业务代码的CPU时间和IO时间。 例如针对上面图中的business方法,可以获得CPU累计消耗时间109ms和剩余的IO累计时间消耗。 假设业务方法是不透明的,只能调用,那么调用方如何统计目标方法的这2个时间消耗。 (可以使用代码,或者工具) 请教各位大神!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
catoop
2021-04-15
打赏
举报
回复
这个确实很复杂,需要精通内核底层的很多知识,如果有能有一个这样的工具就好了。
冰思雨
2021-04-07
打赏
举报
回复
计算 CPU的使用时长 是一个很复杂的过程,同理,IO时长也是相对会比较复杂,总之,越想精确一些,算法就越麻烦,你要对操作系统,进程调度之类的东西非常了解才有可能实现。
冰思雨
2021-04-07
打赏
举报
回复
楼主的这个需求,是外行人提的吗? 你现在使用的是Java程序,但是,需求,怎么看着像C/C++程序的需求啊? 统计 CPU 和 IO 的操作时长,这个是操作系统级的需求,一般由偏低级的语言才能好实现。 Java语言是运行在虚拟机之上的程序,统计 操作系统之下的 CPU 和 IO 操作(偏硬件方面),是很困难的事情。 Java 语言可以统计的,一般都是函数的执行时长(使用动态代理技术),楼主可以考虑这个方向,统计函数的调用时长吧,这个还靠谱点。 当然,函数的执行时间,很可能无法区分 CPU时长 和 IO时长。
老王就是我
2021-04-02
打赏
举报
回复
没办法统计,system.current也是需要消耗性能的,并不是无损操作
qq_28147505
2021-04-01
打赏
举报
回复
所以最终是如何处理? 不对,业务方法是不透明的,你去调用,那就只有请求总时间了。。 不透明了,你怎么还知道有io,cpu的操作。。
faith.huan
2019-08-04
打赏
举报
回复
可以考虑使用springAop,分别计算business方法耗时(IO+CPU), HttpClientUitl.get方法耗时(IO) ,至于如何将这两个如何绑定到一次处理 可以考虑使用ThreadLocal设置个数字,用于标识 business和HttpClientUtil.get属于一次处理
用
java
的
io
做一个
代码
计数器_
Java
中的程序计数器是什么
本文详细介绍了
Java
中的程序计数器,它是线程隔离的,用于记录当前线程
执行
的字节码地址,特别是在多线程环境下确保
执行
顺序。此外,还探讨了CountDownLatch在实现线程同步中的作用,以及AtomicLong在并发计数中的应用和潜在问题。最后,提到了
Java
中可能导致线程饥饿的原因及其解决方案。
线上问题排查解决思路-
CPU
利用率高/飙升
线上应急要尽快恢复服务,再定位解决问题。本文以
CPU
利用率高/飙升为例,先模拟该场景,接着介绍定位问题线程的三种方法,包括传统方法、show-busy-
java
-threads脚本和arthas工具,最后针对不同线程占用
CPU
高的情况给出后续分析方向。
10分钟掌握
Java
性能分析诀窍
本文详细介绍了
Java
性能分析的四个关键方面:线程栈剖析、GC日志分析、JFR事件剖析和堆内容分析。通过线程死锁检查、线程
统计
、
CPU
使用率、GC吞吐率、暂停
时间
统计
等指标,以及JFR的
CPU
占用率、GC配置、方法采样和
IO
性能检查,帮助开发者定位和解决性能问题。此外,还涉及堆内容中的大对象、类加载和对象泄露检查,以防止OOM。这些实用的技巧为优化
Java
应用性能提供了有效的方法。
Java
应用线上问题排查思路、常用工具小结
本文介绍了如何在SpringBoot项目中通过
Cpu
Reaper模拟
CPU
飙升场景,并详细阐述了定位问题的三种方法:使用传统top命令、arthas工具以及show-busy-
java
-threads脚本。重点讲解了如何分析GC线程和
业务
线程引发的
CPU
占用问题,包括内存泄露、线程池异常以及如何利用Arthas进行故障恢复。,
深入理解JVM—寻找性能瓶颈并进行优化
文章详细介绍了
Java
应用在资源消耗过高时可能导致的性能问题,包括
CPU
的us和sy值过高、
IO
等待和网络
IO
消耗。针对这些问题,提供了
CPU
使用率过高时的线程分析和锁竞争优化,
IO
问题的处理方法如异步写文件和批量操作,以及JVM内存消耗的分析和调优策略,如设置合适的堆大小、管理GC和避免不必要的引用。此外,还讨论了资源消耗不多但程序
执行
慢的情况,如锁竞争、未充分利用硬件资源和数据量增长,并提出了相应的优化建议。
Java SE
62,622
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章