使用thread.sleep(1000)挂线程需要将近50分钟

时间:2017-01-09 10:25:13

标签: java jvm

我的客户cpu超过100%使用java进程。我搜索这个问题,我发现了奇怪的记录。一个线程进入睡眠状态(1000)10次,但需要花费50分钟! 到底是怎么回事??? 也许这个睡眠线程的问题来自高CPU使用或者由于睡眠线程而导致cpu出现。 我正在用visualvm看,我看到了睡觉的线程。之后,我使用visualvm中的“Perform GC”按钮进行测试。如果我按下这个按钮,线程的记录是o.k.如果java的设置可能错了?

java.lang.Runnable  

public void destroy() {
    LOG.debug("destroy " + getProgramName());

    Runnable destroyer = new Runnable() {
        public void run() {
            Thread.currentThread().setName("RuntimeSystem-Destroyer");
            synchronized (lock) {
                runningSystemServiceDestroyers++;
            }

            try {

                unlockKopfsatzsperren();

                }
                remotingClosed();
            } catch (RemoteServiceException e) {
                LOG.error("Fehler", e);
            } finally {
                synchronized (lock) {
                    runningSystemServiceDestroyers--;
                }
            }
        }
    };
    destroyTask = executorService.submit(destroyer);
}

java.lang.Thread

private void unlockKopfsatzsperren() {

    long timeout = System.currentTimeMillis() + 1000 * 60 * 1; 

    int maxWait = 10;
    while (maxWait > 0) {
        try {
            LOG.info("wait for " + maxWait + " Sek.");
            maxWait--;
            Thread.sleep(1000);
        } catch (InterruptedException e) {
        }
    }

    ...

以下是日志记录的片段:

  • 06.01.2017 13:02:39 .902信息等待6 Sek。
  • 06.01.2017 13:06:29 .333信息等待5 Sek。
  • 06.01.2017 13:15:26 .080等待4 Sek。
  • 06.01.2017 13:22:20 .519 Info等待3 Sek。
  • 06.01.2017 13:27:44 .636信息等待2 Sek。
  • 06.01.2017 13:33:22 .530 Info等待1 Sek。

查看时间戳!

和JVM参数

  • -Djava.awt.headless =真
  • -Djava.awt.headless =真
  • -Djava.rmi.server.hostname = 191.2.2.1
  • -Dgenero.service.ping.timeout = 120
  • -Dcom.sun.management.jmxremote.port = 12345
  • -Dcom.sun.management.jmxremote.authenticate =假
  • -Dcom.sun.management.jmxremote.ssl =假
  • -Xms32m
  • -Xmx512m
  • -Djava.library.path = .. / lib中
  • -Dwrapper.key = oiirTtljthEYn2iF
  • -Dwrapper.port = 32007
  • -Dwrapper.jvm.port.min = 31000
  • -Dwrapper.jvm.port.max = 31999
  • -Dwrapper.pid = 27796
  • -Dwrapper.version = 3.2.3
  • -Dwrapper.native_library =包装
  • -Dwrapper.service = TRUE
  • -Dwrapper.disable_shutdown_hook = TRUE
  • -Dwrapper.cpu.timeout = 10
  • -Dwrapper.jvmid = 1

顶部: enter image description here

0 个答案:

没有答案