我在运行在tomcat 6上的Ubuntu 10.10服务器上部署了一个Grails Web应用程序(只是一个标准的war文件)。我的数据库是postgresql。
问题是,每当我尝试login到这个Web应用程序时,每隔一段时间(一次或两次不活动)就会冻结。 我可以导航到login页面,但是当我尝试login(第一次数据库被击中,可能是一个线索..?)应用程序只是无限期地冻结,没有500响应代码…浏览器只是等待和等待。
我按照这里详细的说明
因为所描述的问题跟我的听起来一样。 我的GC日志显示没有长时间运行的GC,所有的秒。
当应用程序冻结一个jmap堆输出是…
using parallel threads in the new generation. using thread-local object allocation. Concurrent Mark-Sweep GC Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 536870912 (512.0MB) NewSize = 21757952 (20.75MB) MaxNewSize = 87228416 (83.1875MB) OldSize = 65404928 (62.375MB) NewRatio = 7 SurvivorRatio = 8 PermSize = 21757952 (20.75MB) MaxPermSize = 85983232 (82.0MB) Heap Usage: New Generation (Eden + 1 Survivor Space): capacity = 19595264 (18.6875MB) used = 11411976 (10.883308410644531MB) free = 8183288 (7.804191589355469MB) 58.23843965562291% used Eden Space: capacity = 17432576 (16.625MB) used = 9249296 (8.820816040039062MB) free = 8183280 (7.8041839599609375MB) 53.05754009046053% used From Space: capacity = 2162688 (2.0625MB) used = 2162680 (2.0624923706054688MB) free = 8 (7.62939453125E-6MB) 99.99963008996212% used To Space: capacity = 2162688 (2.0625MB) used = 0 (0.0MB) free = 2162688 (2.0625MB) 0.0% used concurrent mark-sweep generation: capacity = 101556224 (96.8515625MB) used = 83906080 (80.01907348632812MB) free = 17650144 (16.832489013671875MB) 82.62032270912317% used Perm Generation: capacity = 85983232 (82.0MB) used = 62866832 (59.95448303222656MB) free = 23116400 (22.045516967773438MB) 73.1152232100324% used
任何人都知道“From Space:”是什么?
任何想法进一步错误发现的想法? 我没有太多的经验,这种types的故障查找。
你的延迟听起来太长,以至于与gc有关。 我会添加一些工具代码到login页面,并测量像数据库和页面响应的东西。 然后手动重现这个问题或者使用一个像Grinder这样的负载testing工具。
另外,你在问什么呢? 专用硬件还是VM?
HTH!
汤姆·珀尔