jjzjj

Monitoring

全部标签

Java 线程池执行器监控

JavaSE6文档中的ThreadPoolExecutor类具有以下method:publicintgetActiveCount()Returnstheapproximatenumberofthreadsthatareactivelyexecutingtasks.这里的approximate和activelyexecution是什么意思?是否有任何保证,如果在调用getActiveCount()之前、期间和之后N个线程已从池中分配给任务执行,并且这N个线程都不可用于进一步的任务分配,getActiveCount()返回的整数正好是N?如果getActiveCount()不提供这种保证,

java - JMX 与 VisualVM?

我阅读了几个关于JMX和VisualVM的链接,但仍然对它们有一些疑问。据我了解,JMX和VisualVM是两种不同的JVM监控工具。此外,JMX具有API,Java应用程序可以合并这些API,并允许监控工具更好地监控应用程序。有人可以澄清这种理解是正确的还是有缺陷的?如果有缺陷,您能否指出任何更好地解释这种差异/比较的文章?此外,我什么时候开始使用JMX或VisualVM来监视托管在Tomcat6.1服务器上的基于Java的Web应用程序? 最佳答案 这是不正确的。JConsole和JavaVisualVM是两种不同的JVM监控工

java - 用于 Java 任务控制的基于命令行的守护进程?备择方案?

我被要求调查OracleJavaMissionControl,以便在特定条件下可以监视服务器端Java应用程序并采取行动(例如发出和记录警报、保存飞行记录)。JavaMissionControl的触发系统,您可以在其中指定条件和操作,满足我们的需求,但它似乎取决于正在运行的GUI应用程序(“OracleJavaMissionControl”),这意味着触发器不是受监视的JMX服务器的责任。是这样吗?有许多服务器通常通过终端访问...有没有办法在终端session中将JavaMissionControl作为守护进程运行,无人值守,同时保留并遵守任何指定的触发规则(例如,从XML文件导入)

Java Web 应用程序健康检查良好实践

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭5年前。Improvethisquestion我有一个JavaWeb应用程序正在运行(使用Spring),我希望每隔几分钟执行一次健康检查。我不是在检查Tomcat或JVM,而是严格在应用程序级别检查,因此我对要检查的内容有一些想法。例如:做一个简单的查询来检查数据库的完整性检查环境是否为“生产环境”(因为这是唯一受监控的环境)基本上,我正在寻找有关要检查的内容或一些最佳实践的其他想法和建议。有什么想法吗?

java - 如何确定应用程序中的 gc-cpu 利用率?

我们希望将JConsole/JVisualVM的一些功能内部化,并从正在运行的应用程序中收集有关cpu利用率和内存消耗的数据。原因是,安全约束阻止我们在生产系统上向外部开放jmx端口。所需的大部分数据都可以通过MXBeans进行监控,但是,用于垃圾收集的cputime仍然让我们望而却步。通过GarbageCollectorMXBean监控gc-time没有用,因为它只提供并行工作收集器的walltime。我假设可以使用ThreadMXBean来确定所有gc线程的cputime。我看不出有什么办法可以安全地识别这些线程。有人知道JVisualVM是如何计算这个数字的吗?

java - jetty 间歇性崩溃的问题

我遇到了Jetty间歇性崩溃的问题,我使用的是Jetty6.1.24。我正在运行一个neo4jSpringMVCwebapp,Jetty将保持运行大约1小时,然后我必须重新启动Jetty。它运行在小型亚马逊ec2实例上,debian内存为1.7gb。我使用java-Xmx900m-server-jarstart.jar启动Jetty我正在使用putty连接到服务器,当Jetty崩溃时puttysession断开连接,我看不出是什么错误导致它崩溃。我想看看它是否是Spring生成的错误,我不确定如何使用Jetty记录spring应用程序的输出。或者,如果是Jetty或内存问题,那么监控J

java - 如何测量Java线程执行时间?

我想测量Java中的线程执行时间。现在我正在监视线程的开始和结束时间,但我认为它不太准确,因为线程可能会在执行期间挂起。 最佳答案 JavaMXBeans可以提供每线程CPU时间:importjava.lang.management.ManagementFactory;importjava.lang.management.ThreadMXBean;longnanos=ManagementFactory.getThreadMXBean().getThreadCpuTime(Thread.currentThread().getId())

java - 仍然无法通过 VisualVM 远程连接 Tomcat 6

如果检查了有关此问题的其他问题,但到目前为止还没有解决。这是我的设置:TC6在我的macbook上的debian虚拟机上运行。在/etc/default/tomcat6.0我设置了以下选项:CATALINA_OPTS="-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=8086-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false"netstat-ntlp给我:tcp600:::80

java - 是否可以通过编程方式启用远程 jmx 监控?

我需要以编程方式启动一个新的java进程并动态设置JMX端口。所以不要这样做-Djava.rmi.server.hostname=127.0.0.1-Dcom.sun.management.jmxremote.port=9995-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false我想做以下事情System.setProperty("java.rmi.server.hostname","127.0.0.1");System.setProperty("com.sun

java - 如何使用 ExecutorService 跟踪任务执行统计信息?

我正在使用ExecutorService启动任务,分派(dispatch)需要按任务特定标准分组的任务:Task[type=a]Task[type=b]Task[type=a]...我想定期输出每个任务花费的平均时间长度(按type分组)以及平均/中位数和标准差等统计信息。当然,这需要非常快,理想情况下不应导致各个线程在报告统计信息时同步。执行此操作的良好架构是什么? 最佳答案 ThreadPoolExecutor提供beforeExecute和afterExecute您可以覆盖的方法。您可以使用它们在单个(ExecutorServ