作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我们的 AppServer 中,我们看到线程数超过了它的 JMX 线程数阈值(最大值 = 500,实际值 = 595)。
我看到没有死锁。我进行了线程转储,发现在 595 个线程中,大多数都属于 2 类:
1) Timed Waiting 中的 234 个线程(Thread Dump 如下所示)
"Timer-232" daemon prio=10 tid=0x00007f46c85cd000 nid=0x7b06 in Object.wait() [0x00007f4668001000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000075246c498> (a java.util.TaskQueue)
at java.util.TimerThread.mainLoop(Timer.java:509)
- locked <0x000000075246c498> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:462)
2) 233 个线程处于等待状态(如下所示的线程转储)。我想这是在队列中被阻塞的罪魁祸首,特别是延迟队列。
"AsyncHttpClient-Reaper" daemon prio=10 tid=0x00007f469cd4c000 nid=0x7b09 waiting on condition [0x00007f4667cfe000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000007524a2908> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
at java.util.concurrent.DelayQueue.take(DelayQueue.java:160)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:602)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:662)
你能帮我理解是什么导致线程超过 JMX 阈值吗?这是我第一次使用线程场景,因此无法进行可靠的分析。提前致谢。
最佳答案
看起来您正在用太多的异步请求扰乱您的系统。限制它们或为这些请求设置最大池数
关于java - 运行的线程过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25570583/
我是一名优秀的程序员,十分优秀!