【问题标题】:Monitor disk activity in Java在 Java 中监视磁盘活动
【发布时间】:2014-06-19 21:20:09
【问题描述】:

我正在寻找在 Java、闭源、商业、桌面应用程序中监视磁盘活动的方法。特别是,我想做的是监控应用程序访问数据库/磁盘的频率 - 它会在应用程序中显示为“HDD led”指示器,并且工作方式完全相同(因此,基本上是实时活动监控) .我还希望拥有尽可能少的外部库。

到目前为止,我发现的东西似乎不太令人鼓舞 - 我还没有看到类似的确切示例以及我设法挖掘的最佳热门参考大型框架(如 Sigar)或库像 JPicus(它不支持 Java7 并且似乎不支持我的情况)。 JMX 工具似乎也不支持这一点,所以我非常愿意接受任何想法/建议。

技术栈是 - Java7、Eclipse RCP、SQL Server 2008。

编辑:为了清楚起见,我想使用纯平台无关的 Java 解决方案监控 Java 程序的磁盘 I/O 活动。

【问题讨论】:

  • 您需要监控其他进程的磁盘活动,还是只监控您自己的进程?数据库是一个单独的进程吗?
  • 你可以使用 strace (linux) 还是 procmon (windows) 吗?
  • 这是一个使用 MS SQL Server 的应用程序,因此 Linux 不适合。我只需要监控我自己的进程——更具体地说,我需要监控 JVM(运行我的应用程序)访问磁盘的频率。因此,本质上,我只需要查看应用程序访问磁盘的频率。回答第二条评论 - 我宁愿不依赖外部工具,但如果这样可以简化实施,我愿意考虑一下。话虽如此,我发现提到 JNI 用于访问一些低级 Windows API 调用/函数 - 我也想避免 :)

标签: java performance android-activity monitor disk


【解决方案1】:

如果您想知道如何监控 Windows 进程的磁盘 I/O 活动:请询问有关服务器故障的问题。

如果您想知道如何使用纯平台无关的 Java 解决方案监控 Java 程序的磁盘 I/O 活动:没有,尤其是满足您的要求。从技术上讲,唯一的选择是使用检测代码包装所有 I/O 操作,这是相当昂贵的。

【讨论】:

  • 感谢您的帖子 - 我已经编辑了原始问题以完全清楚它。假设我愿意考虑 JNI 调用 - 你有什么建议吗?
【解决方案2】:

您可以将 FileInputStream/FileOutputStream 的实现替换为扩展目录中的类。如果没有尽早发现,请尝试将 java.system.class.loader 设置为您自己的类加载器,该类加载器可以拦截对这些类的请求。

【讨论】:

  • 我感兴趣的不仅仅是磁盘文件操作——它是任何磁盘活动,无论是文件操作、数据库还是完全不同的东西。不过,感谢您的回复。
猜你喜欢
  • 2013-03-09
  • 2011-02-07
  • 2010-09-09
  • 2010-09-28
  • 2016-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多