Wicket应用程序的性能分析

3

有没有好的工具或技术可以对Wicket应用程序进行剖析?我想要的是在处理请求时,能够给我一个Wicket内部发生情况的细分。

它不必像Spring Insight那样花哨。

我是Wicket的新手,到处都是匿名内部类,这使得很难看清楚事情发生的时间。

4个回答

6
至少对于Wicket 1.4,您可以查看内部方法org.apache.wicket.RequestCycle.steps()。基本上,这是一个已被识别为Wicket应用程序请求的请求,将在Wicket请求处理周期的相关步骤中进行浏览。在类RequestCycle的开头,每个主要步骤都由一个int常量表示。 int值越高,步骤在周期中出现的时间越晚。从RequestCycle.steps()调用的RequestCycle.step()方法具有一个switch语句,用于将不同的步骤委托给负责框架方法进一步委托下去。
请求周期中的步骤或阶段按顺序如下:
NOT_STARTED-初始值 PREPARE_REQUEST-准备进一步处理,调用onBeginRequest RESOLVE_TARGET-确定相关请求目标 PROCESS_EVENTS-处理事件,将当前步骤设置为RESPOND并作出响应 RESPOND-仅响应,在重定向的情况下使用 DETACH_REQUEST-通过委派触发分离挂钩 DONE-在DETACH_REQUEST之后成为当前值
实际上发生的步骤由各种接口的实现确定,最重要的是IRequestCycleProcessorIRequestTarget

谢谢!这为我提供了对Wicket的新见解。 - Kimble

6

查看

org.apache.wicket.response.filter.ServerAndClientTimeFilter org.apache.wicket.response.filter.AjaxServerAndClientTimeFilter org.apache.wicket.devutils.inspector.RenderPerformanceListener org.apache.wicket.protocol.http.RequestLogger

所有这些都提供一些测量结果,但也请参阅Cedric Gatay的回复评论。 使用像Yourkit(http://www.yourkit.com)这样的工具将对此任务有很大帮助。


1

您可以像对待其他Java应用程序一样使用jvisualvm进行分析。通过正确设置类过滤器,您将能够看到代码中哪些部分耗费了时间,并希望能够进行纠正。


那样做有点用,但并没有真正提供任何关于事物顺序的正确洞察(在Wicket应用程序中远非显而易见),也没有涉及到与框架的交互。 - Kimble
1
你想对Wicket本身还是你的应用程序进行分析?通过在Wicket中添加这些点,您将看到类似于:提交表单花费了X毫秒,点击链接花费了Y毫秒,呈现花费了Z毫秒,...但这些信息并不足够。您唯一能说的是点击链接很慢,但这并不会告诉您#onClick()实现是否会访问数据库或Web服务,这才是真正的性能问题。 - martin-g
理想的解决方案将深入了解Wicket和我的应用程序以及它们之间的交互。Wicket过滤器似乎是一个不错的起点。 - Kimble

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接