1

我使用 solr 4.0 遇到了一个奇怪的错误。我用一个分片三个节点运行一个 solr 云。ThreadDumpHandler告诉有一个 id 为 0 的无效线程。

ThreadMXBean tmbean = ManagementFactory.getThreadMXBean();
long[] tids = tmbean.getAllThreadIds();
log.info("all threads tids:" + (tids == null? "null" :tids.length));
if (tids != null) {
  for (long l :tids) {
    log.info(String.valueOf(l));
  }
  log.info("all thread infos:");
  NamedList<SimpleOrderedMap<Object>> lst = new NamedList<SimpleOrderedMap<Object>>();
  for (long l :tids) {
    if (l > 0) {
      ThreadInfo ti = tmbean.getThreadInfo(l, Integer.MAX_VALUE);
      if (ti != null) {
        log.info(ti.toString());
        lst.add( "thread", getThreadInfo( ti, tmbean ) );
      }
    } else {
      log.info("invalid thread id:" + l);
    }

  }
  system.add( "threadDump", lst );
}
4

0 回答 0