Tomcat响应时间激增

时间:2016-07-06 08:40:47

标签: garbage-collection tomcat7 threadpool java-7 newrelic

我在网络应用中遇到了平均响应时间方面的性能问题。

我的筹码是

Oracle Java 7 Tomcat 7.62 / 61 AWS Linux框 Java opts -Xms1G -Xmx4G -XParallelGCThreads = 4(不完整会增加更多) 使用新遗物

从我的网络应用程序,我正在调用其他服务(另一台机器上的另一个Java进程)

我正在使用Executors.newCachedThreadPool()(我知道这很糟糕,但不能将我的问题归结为这个问题)在休息时调用其他进程。

现在问题是,我的新遗物每15-20分钟左右显示网络应用平均响应时间的峰值。线程数在那时确实增加了。 (只有可见的东西)CPU却不会惊人地增加。只有边缘峰值,并且保持在50以下。尽管我没有时间,GC仍在定期运行。(新文件只显示GC收集%年龄)

在服务方面,平均响应时间不会增加,在峰值期间保持或多或少持平。

在webap调用中向下钻取显示,虽然在外部服务中这些服务的时间增加(感觉两个应用程序统计数据之间的差异在新文件上有什么想法?)

  1. 有人可以提出解决问题的方法吗?
  2. 我应该收集哪些数据才能解决这个问题?
  3. 有人可以对新遗物缺失的点点亮吗?
  4. 看起来是GC还是线程池?

2 个答案:

答案 0 :(得分:0)

识别GC问题:例如,启用GC日志记录并通过GCViewer

运行生成的文件

识别线程池上长时间运行的任务:附加一个分析器,然后查看线程历史记录以查看执行程序池的线程是否经常忙或有空闲时间

答案 1 :(得分:0)

你应该尝试G1 GC。它会缩短长gc,从而缩短峰值