我有一个表现很好的网络应用程序,然后突然一个页面请求会冻结并超时,然后一切都会花一点时间再次发生同样的事情。
我很难深究这一点,因为有很多变量可以分析。
有没有办法:一个工具或步骤计划可以帮助我深入了解这个并基本上分析从页面请求到数据库调用的整个过程,并找出潜在的问题?我使用New Relic和MAT,我刚开始使用Javamelody,但说实话:在哪里集中注意力?通常当页面冻结/超时时,不清楚瓶颈在哪里。要注意的是什么是阈值/红旗?
亲切的问候, 马克
答案 0 :(得分:1)
对于服务器端,我发现jstack通常是比分析器更好的工具。主要是因为它很快,命令行并且已经安装了服务器的JDK。
间歇性Web应用程序速度减慢的典型原因是等待某个锁定释放的线程。
当Web应用程序卡住时,运行jstack
并查看线程以查看哪些卡在锁上以及锁是什么。这是一个快速的tutorial,因为它起初听起来令人生畏,但它非常简单。
答案 1 :(得分:0)
根据这里和其他地方的提示,我发现了一些似乎影响了事情的事情,尽管从长远来看我们必须看看它是如何运作的。现在,它似乎更好,虽然我很难指出究竟是什么产生了最大的不同。我做的事情: *使Spring数据源变得懒惰,以便可以从缓存提供的请求不会创建不必要的事务 *将mySQL thread_cache_size更改为50.之前是8。 *从c3p0更改为BoneCP
目前看来,间歇性停顿不再发生了。