我在我们的 prod 环境中看到一些异常行为,这导致我们在运行 Tomcat 的服务器上的线程数很高。10,092,544K 的堆大小在新生代和任期代之间划分为 2,752,512K + 7,340,032K = 10,092,544K。
我很困惑为什么当堆上有足够的内存可用时 GC 会多次运行(新旧一代)(Full GC [PSYoungGen: 0K->0K(2752512K)] [ParOldGen: 2748534K->2748529K(7340032K) )])
正如你所看到的,年轻一代的 0K->0K 和老一代的 .27G -> .27G 意味着几乎没有任何对象被 gc'd 并且有这么多的可用内存。(堆大小为 10G)。
由于 Full GC 在短时间内运行多次,这会导致性能下降,因此应用程序无法处理传入的用户请求,从而导致服务器上的高线程,最终我们必须重新启动服务器才能摆脱这种情况。
你能解释一下这里发生了什么吗?
这是 gc.log 上的输出。
. .
更多的...... 。.
7 月 18 日 14:52:38 fwprodcontent03 gc.log: 3172.122: [GC [PSYoungGen: 0K->0K(2752512K)] 2750855K->2750855K(10092544K), 0.0515920 secs] [Times: user=0.32 sys=0.01, real= 0.06 秒]
7 月 18 日 14:52:42 fwprodcontent03 gc.log: 3172.174: [Full GC [PSYoungGen: 0K->0K(2752512K)] [ParOldGen: 2750855K->2749937K(7340032K)] 2750855K->2749937K(1009937K(1009937K(1009937K(7340032K))] 2750855K->274993737K(1009937K(1009937K)(1009937K4) ->262115K(262144K)],4.1571260 秒] [时间:用户=44.29 系统=0.06,实际=4.15 秒]
7 月 18 日 14:52:42 fwprodcontent03 gc.log: 3176.361: [GC [PSYoungGen: 9071K->1280K(2752512K)] 2759008K->2751217K(10092544K), 0.0989600 secs] [Times: user=0.64 sys=0. 0.10秒]
7 月 18 日 14:52:46 fwprodcontent03 gc.log: 3176.461: [Full GC [PSYoungGen: 1280K->0K(2752512K)] [ParOldGen: 2749937K->2748847K(7340032K)] 2751217K->274484437KPS(1009) 274824437KPermKGen: 2 ->262121K(262144K)],3.1331910 秒] [时间:用户=31.25 系统=0.01,实际=3.14 秒]
7 月 18 日 14:52:46 fwprodcontent03 gc.log: 3179.616: [GC [PSYoungGen: 2161K->288K(2752512K)] 2751008K->2749135K(10092544K), 0.0688890 secs] [Times: user=0.42 sys=00. 0.07 秒]
7 月 18 日 14:52:49 fwprodcontent03 gc.log: 3179.686: [完整 GC [PSYoungGen: 288K->0K(2752512K)] [ParOldGen: 2748847K->2748930K(7340032K)] 2749135K->2749135K->274824430KPermGen:26 ->262143K(262144K)], 3.2369940 secs] [时间 s: user=32.23 sys=0.02, real=3.23 secs]
7 月 18 日 14:52:49 fwprodcontent03 gc.log: 3182.923: [GC [PSYoungGen: 0K->0K(2752512K)] 2748930K->2748930K(10092544K), 0.0607190 secs] [Times: user=0.39 sys=0.01, real= 0.06 秒]
7 月 18 日 14:52:57 fwprodcontent03 gc.log: 3182.984: [Full GC [PSYoungGen: 0K->0K(2752512K)] [ParOldGen: 2748930K->2748528K(7340032K)] 2748930K->2748528K(100932K4) [KPSYoungGen: 26241 ->262141K(262144K)],8.5377730 秒] [时间:用户=98.30 系统=0.57,实际=8.54 秒]
7 月 18 日 14:52:58 fwprodcontent03 gc.log: 3191.533: [GC [PSYoungGen: 202K->128K(2752512K)] 2748731K->2748656K(10092544K), 0.1088430 秒] [时间: user=0.67 sys=0.0 0.11 秒]
7 月 18 日 14:53:02 fwprodcontent03 gc.log: 3191.642: [完整 GC [PSYoungGen: 128K->0K(2752512K)] [ParOldGen: 2748528K->2748534K(7340032K)] 2748656K->274824434KPermGen:26 ->262143K(262144K)], 3.1761780 secs] [时间 s: user=31.11 sys=0.02, real=3.18 secs]
7 月 18 日 14:53:02 fwprodcontent03 gc.log: 3194.820: [GC [PSYoungGen: 0K->0K(2752512K)] 2748534K->2748534K(10092544K), 0.0589010 secs] [Times: user=0.38 sys=0.01, real= 0.06 秒]
7 月 18 日 14:53:05 fwprodcontent03 gc.log: 3194.879: [完整 GC [PSYoungGen: 0K->0K(2752512K)] [ParOldGen: 2748534K->2748529K(7340032K)] 2748534K->2748529K(1009529K(10095241)] ->262143K(262144K)],3.0554520 秒] [时间:用户=30.72 系统=0.03,实际=3.05 秒]。. 。更多的.....
提前致谢。