Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat服务器变得缓慢且无响应_Java_Spring_Tomcat8 - Fatal编程技术网

Java Tomcat服务器变得缓慢且无响应

Java Tomcat服务器变得缓慢且无响应,java,spring,tomcat8,Java,Spring,Tomcat8,我在Tomcat8服务器上部署了SpringJava8应用程序,配置64个 GB和多核处理器 应用程序设计用于每天进行小操作和大进程的用户数量,计划在夜间运行,而不需要用户操作 有时应用程序变得缓慢且无响应,主要是在白天,用户执行小操作时。服务器重启后,几天内恢复正常 应用缓慢时我的观察结果是 数据库端没有锁定的查询或会话 当时没有错误 当时没有OutofMemory或与内存相关的异常 我通过jVisual检查了JVM,堆内存在不断增长,类数量也在大量增加 我尝试过手动清理垃圾,但没有用 J

我在Tomcat8服务器上部署了SpringJava8应用程序,配置64个 GB和多核处理器

应用程序设计用于每天进行小操作和大进程的用户数量,计划在夜间运行,而不需要用户操作

有时应用程序变得缓慢且无响应,主要是在白天,用户执行小操作时。服务器重启后,几天内恢复正常

应用缓慢时我的观察结果是

  • 数据库端没有锁定的查询或会话
  • 当时没有错误
  • 当时没有
    OutofMemory
    或与内存相关的异常
  • 我通过jVisual检查了JVM,堆内存在不断增长,类数量也在大量增加
  • 我尝试过手动清理垃圾,但没有用
JVM参数:

-Xms8g-Xmx16g-XX:+AggressiveOpts-XX:+UseConcMarkSweepGC
我有JVM的堆转储,虽然它很慢,但我不知道如何找到导致服务器速度慢的
类或方法或线程


正在寻找解决缓慢问题的建议。

只需查看线程数即可。它是否随着服务器的运行而不断增长。启用弹簧执行器端点并尝试访问
threaddump
端点@VinayAvasthi没有增加线程数,但是有更多的睡眠线程和定时等待线程。使用ConcMarkSweepGC有什么具体原因吗?对于堆大小>8GB的情况,应该使用G1GC(在Java8中是默认值)。它提供了比CMS收集器更可预测的垃圾收集暂停:您是否配置了任何类似APM的AppDynamics、Dynatrace?您可以在其中为慢事务配置阈值,它将捕获它们。然后您可以深入查看事务的哪个部分是慢的。我假设您在Prod环境中面临这个问题。然后,您应该尝试在测试环境中重现此问题,并在那里对您的修复进行故障排除/测试。尝试使用G1GC而不是CMS,看看它是否提供了任何改进。在测试环境中使用APM查找事务中的瓶颈。如果您不想使用APM,那么您可以向应用程序添加适当的日志,并使用它们来跟踪瓶颈。它是否随着服务器的运行而不断增长。启用弹簧执行器端点并尝试访问
threaddump
端点@VinayAvasthi没有增加线程数,但是有更多的睡眠线程和定时等待线程。使用ConcMarkSweepGC有什么具体原因吗?对于堆大小>8GB的情况,应该使用G1GC(在Java8中是默认值)。它提供了比CMS收集器更可预测的垃圾收集暂停:您是否配置了任何类似APM的AppDynamics、Dynatrace?您可以在其中为慢事务配置阈值,它将捕获它们。然后您可以深入查看事务的哪个部分是慢的。我假设您在Prod环境中面临这个问题。然后,您应该尝试在测试环境中重现此问题,并在那里对您的修复进行故障排除/测试。尝试使用G1GC而不是CMS,看看它是否提供了任何改进。在测试环境中使用APM查找事务中的瓶颈。如果您不想使用APM,那么您可以向应用程序添加适当的日志,并使用它们来跟踪瓶颈。