在机器启动期间测量java服务性能?
我们有几个java应用程序,它们使用Tankui的java服务包装器作为Windows服务运行。当机器启动时(前30秒),我们的客户遇到了可伸缩性问题 传统上,我们使用jconsole/visualvm来监视Java虚拟机的运行状况。但是这些工具对于在机器启动期间捕获java.exe性能不是很好 我在谷歌上搜索了一个答案,我找到的最好的搜索结果是一篇题为“测量Java虚拟机的启动时间”的论文,但他们求助于在应用程序中插入JNI调用。我们希望采用侵入性较小的方法 在机器启动期间,能够捕获java.exe统计数据(线程计数、堆使用等)的好的外部工具或技术是什么 @djmorton要求定义可伸缩性问题。问题是,当应用程序监视100个系统对象时,一切正常。但当数据增加到1000个系统对象时在机器启动期间测量java服务性能?,java,scalability,startup,performance-testing,java-service-wrapper,Java,Scalability,Startup,Performance Testing,Java Service Wrapper,我们有几个java应用程序,它们使用Tankui的java服务包装器作为Windows服务运行。当机器启动时(前30秒),我们的客户遇到了可伸缩性问题 传统上,我们使用jconsole/visualvm来监视Java虚拟机的运行状况。但是这些工具对于在机器启动期间捕获java.exe性能不是很好 我在谷歌上搜索了一个答案,我找到的最好的搜索结果是一篇题为“测量Java虚拟机的启动时间”的论文,但他们求助于在应用程序中插入JNI调用。我们希望采用侵入性较小的方法 在机器启动期间,能够捕获java.
- 1100个JVM线程并发运行
- 线程X持有Java读写锁上的写锁C1正忙于使用Hibernate/c3p0/JDBC/MySQL更新系统对象的一部分
- 线程Y持有结构P的JVM对象内部锁,正在等待获取Java读写锁C1上的读锁,以便使用Hibernate/c3p0/JDBC/MySQL从数据库读取系统对象的另一部分
- 线程Z正在等待获取结构P的JVM对象内部锁
我们必须解决一个Windows文件权限问题。JProfiler希望创建临时文件,但在此环境中,JProfiler正在使用LocalSystem帐户在Windows服务中运行。解决方法是临时将服务设置为以管理员身份运行。您看到了什么样的可伸缩性问题?请记住,由于Java的动态本机编译特性,Java虚拟机需要一些时间来“预热”,在此期间,执行的代码路径将被监视,并最终编译为本机代码。在这种情况发生之前,总体性能可能会受到影响。您使用的是客户机JVM的服务器吗?服务器的风格经过优化,随着时间的推移速度会更快,但启动速度会更慢,而客户端的风格经过优化,启动速度会更快。