我在网络应用中遇到了平均响应时间方面的性能问题。
我的筹码是
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调用中向下钻取显示,虽然在外部服务中这些服务的时间增加(感觉两个应用程序统计数据之间的差异在新文件上有什么想法?)
答案 0 :(得分:0)
识别GC问题:例如,启用GC日志记录并通过GCViewer
运行生成的文件识别线程池上长时间运行的任务:附加一个分析器,然后查看线程历史记录以查看执行程序池的线程是否经常忙或有空闲时间
答案 1 :(得分:0)
你应该尝试G1 GC。它会缩短长gc,从而缩短峰值