其中一台主机上存在JVM性能问题。
主机是16个CPU内核,16Gb RAM,Windows Server 2012是主机OS。 JVM是1.8 131,Xmx是10Gb,但是2-3Gb足以用于正常操作,并且消耗很少会增加。 该应用程序使用所有内核,但CPU使用率非常低-最高15%。 GC活性低。
在其他主机上运行的具有相同配置的同一应用程序没有性能问题,并且可以根据需要轻松吃掉2-3Gb RAM和CPU。
但是,在此特定主机上,当一些负载开始时,该应用几乎变得无响应。我们已经预定义了几个线程池的核心大小,并且当应用程序开始通过创建新线程来增加线程池时-它几乎卡住了。
线程转储看起来很奇怪。很多长时间运行的java.lang.Thread.setPriority0()正在运行的线程。
赞:
"Thread-14592" #676532 daemon prio=3 os_prio=0 tid=0x0000000026852000 nid=0x15a0 runnable [0x000000003737e000]
java.lang.Thread.State: RUNNABLE
at java.lang.Thread.setPriority0(Native Method)
at java.lang.Thread.setPriority(Unknown Source)
at java.lang.Thread.init(Unknown Source)
at java.lang.Thread.init(Unknown Source)
at java.lang.Thread.<init>(Unknown Source)
at java.util.concurrent.Executors$DefaultThreadFactory.newThread(Unknown Source)
at com.util.NamedThreadFactory.newThread(NamedThreadFactory.java:38)
at java.util.concurrent.ThreadPoolExecutor$Worker.<init>(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.addWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.execute(Unknown Source)
at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
...
setPriority0()
可以运行几分钟,因此该主机上的应用程序性能非常糟糕。
我们尝试设置-XX:-UseThreadPriorities,但结果相同。
有人可以给我们一个线索,找到我们描述的行为的原因该怎么看?
答案 0 :(得分:0)
这确实是一种防病毒软件。
不知道它的特定设置是什么,但是当防病毒软件关闭时,该应用程序将恢复正常的快速运行。