Dropwizard线程计数为3k,使应用程序响应缓慢

时间:2018-05-29 07:05:34

标签: java multithreading dropwizard newrelic jedis

在New Relic

中检查线程分析器后面对与线程相关的问题

98%sun.misc.Unsafe.park(boolean,long):native     89%java.util.concurrent.locks.LockSupport.parkNanos(java.lang.Object,long):215         88%java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.awaitNanos(long):2078             86%org.eclipse.jetty.util.BlockingArrayQueue.poll(long,java.util.concurrent.TimeUnit):392                  86%org.eclipse.jetty.util.thread.QueuedThreadPool.idleJobPoll():563                     86%org.eclipse.jetty.util.thread.QueuedThreadPool.access $ 800(org.eclipse.jetty.util.thread.QueuedThreadPool):48                         86%org.eclipse.jetty.util.thread.QueuedThreadPool $ 2.run():626                             86%java.lang.Thread.run():745

还附上了截图。

enter image description here

使用Dropwizard java框架构建功能,使用Jedis(https://github.com/xetorthio/jedis/wiki/Getting-started)通过websockets发送消息。使用runAsync()异步发送消息。

实际上我们有2个堆栈stack1和stack2都有相同的配置。其中stack1在提供Web请求以及rpm约20k时的这种功能方面表现非常好,但stack2占用了太多时间,专门用于仅以5k rpm的速度提供此功能。 Stack2线程计数峰值在2000到3000之间,而stack1在分析的同时没有显示出这样的峰值。

我们正在使用m4.large类型的AWS EC2实例。如果我以错误的方式做某事,请帮助我。

0 个答案:

没有答案