Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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 Glassfish web应用程序运行缓慢_Java_Performance_Memory_Glassfish_Jvm - Fatal编程技术网

Java Glassfish web应用程序运行缓慢

Java Glassfish web应用程序运行缓慢,java,performance,memory,glassfish,jvm,Java,Performance,Memory,Glassfish,Jvm,我有一个运行在glassfish 3.1.2中的web应用程序。web应用程序运行缓慢。我无法理解原因。在jvm选项中:-Xmx8192m,-XX:MaxPermSize=3072m 最高命令是: Mem: 16269852k total, 16188212k used, 81640k free, 202544k buffers Swap: 8208376k total, 937308k used, 7271068k free, 5715516k cached P

我有一个运行在glassfish 3.1.2中的web应用程序。web应用程序运行缓慢。我无法理解原因。在jvm选项中:-Xmx8192m,-XX:MaxPermSize=3072m

最高命令是:

Mem:  16269852k total, 16188212k used,    81640k free,   202544k buffers
Swap:  8208376k total,   937308k used,  7271068k free,  5715516k cached



  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                    
13037 root      20   0 13.5g 8.4g  65m S 114.7 54.3   9899:38 java                                                                                                      
13495 root      20   0 15288 1448  900 R 41.5  0.0 489:51.24 top                                                                                                        
29747 root      20   0  197m 2544 1524 R 36.6  0.0 449:20.08 mysql                                                                                                      
 8390 root      20   0 1693m 235m  20m S  3.3  1.5   1:12.61 java                                                                                                       
24987 user1     20   0  151m  52m 7092 S  1.3  0.3  38:13.69 Xvnc                                                                                                       
   12 root      20   0     0    0    0 S  1.0  0.0  17:31.10 events/1                                                                                                   
 7386 user1     20   0  304m  12m 7040 S  0.7  0.1   0:23.11 gnome-terminal                                                                                             
 8705 root      20   0 15276 1472  952 R  0.7  0.0   0:05.95 top                                                                                                        
    4 root      20   0     0    0    0 S  0.3  0.0   2:10.46 ksoftirqd/0                                                                                                
 1933 root      20   0 64116  624  524 S  0.3  0.0   5:27.69 sshd                                                                                                       
31445 mysql     20   0 1862m 335m 6280 S  0.3  2.1   4213:09 mysqld                                                                                                     
    1 root      20   0 19352 1208  996 S  0.0  0.0   1:05.27 init                                                                                                       
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.09 kthreadd   

free -g
             total       used       free     shared    buffers     cached
Mem:            15         15          0          0          0          5
-/+ buffers/cache:          9          5
Swap:            7          0          6
jvisualvm屏幕截图:


谢谢,

您的最大烫发尺寸太大了。在屏幕截图中,它仅使用略高于300MB的数据,因此将最大大小设置为略高于3GB实际上没有什么作用。您可以显式设置所需的烫发发电机大小,但这不是一个好主意

其次,堆的大小看起来太大了。在该屏幕截图中,您永远不会达到5GB,即使最大大小为8GB。最好不要将堆的大小设置为超出需要的大小。如果你的应用程序有漏洞,或者只是堆耗尽,你会发现它的影响要严重得多。当设置堆的大小时,将Xmx max和Xms min设置为相同的值,这将阻止堆调整大小

在VisualGC选项卡中可以更好地看到这一点。在我看来,您看到的垃圾收集只是年轻的GC,这不应该引起关注。当你在应用程序缓慢的背景下考虑GC时,首先要看的是暂停时间——每次完整GC需要多长时间,因为它们会暂停你的应用程序

应用程序运行缓慢的可能原因可能是多方面的。例如,这可能是由于资源争用造成的——可能是您的JDBC连接池不够大,或者您的应用程序正在泄漏连接


至于Top中的内存使用情况,请注意您是按%CPU列排序的,而不是按%Mem列排序的,因此首先要查看该列。

还要运行探查器以查看时间和内存的使用情况。不加选择地使用String.intern可能会导致permgen空间被充分利用。我会这样做的。但使用的permgen空间仍然是300MB,占maxperm gen总空间3072m的10%。如果需要更多的permgen空间,它仍然可以分配。如何降低系统的速度?我将减少堆和perm gen的最大大小。使用的jdbc连接数大约是最大值的30%。我认为连接没有泄漏,因为连接数不是单调增加的。使用的文件描述符也是最大值的50%。我找不到任何web应用程序可能会变慢的资源。JDBC连接只是猜测,更多的是这里可能存在问题的范围非常广泛的一个例子。你能描述一下你看到的那种缓慢吗?盲目地减少堆的大小未必有帮助。性能调优是基于数据而不是直觉做出决策,因此理想情况下,您需要看到系统所有方面的一个多星期的长期视图。
What can be the possible reason of slowness?
Why is gc consuming cpu even though the allocated max heap and max perm gen space is higher? 
Why is 99.5% RAM being used although the processes in top are not consuming much space? 
After restarting glassfish it runs fast, the ram consumption is slow.