我们有几个使用Tankui的java服务包装器作为Windows服务运行的java应用程序。我们的客户在机器启动时遇到可扩展性问题(前30秒)。
传统上,我们使用jconsole / visualvm来监控Java虚拟机运行状况。但是这些工具对于在机器启动期间捕获java.exe性能并不是很好。
我搜索了一个答案,我找到的最佳搜索结果是一篇题为“测量Java虚拟机启动时间”的论文"但是他们使用JNI电话http://www.mii.lt/olympiads_in_informatics/pdf/INFOL073.pdf来测试应用程序。我们宁愿采用侵入性较小的方法。
什么是能够在机器启动期间捕获java.exe统计信息(线程数,堆使用等)的良好外部工具或技术?
@djmorton要求定义可伸缩性问题。问题是,当应用程序监视100个系统对象时,一切都很好。但是当数据增加到1,000个系统对象时
答案 0 :(得分:0)
我们最终在离线模式下使用JProfiler。 JProfiler允许您基于JVM启动设置触发器。 JProfiler让我们在Java服务启动期间抓取各种JVM遥测数据,如线程计数,Java锁争用,线程转储等。
我们必须解决一个Windows文件权限问题。 JProfiler想要创建临时文件,但在此环境中,JProfiler使用LocalSystem帐户在Windows服务中运行。解决方法是暂时将服务设置为以管理员身份运行。