AJP无法获取对页面的锁定,PageAccessSynchronizer警告

时间:2014-06-24 18:48:12

标签: java tomcat wicket ajp

我最近在日志中发现了这些警告。我不是线程或tomcat的专家。有没有人对如何调试这个问题有一些建议?

我们正在tomcat服务器上运行wicket应用程序。如果有任何其他信息有用,请告诉我。提前感谢您的帮助。

[Jun 24, 2014 11:28:40] WARN [org.apache.wicket.page.PageAccessSynchronizer]
- Thread 'ajp-   bio-8009-exec-26' failed to acquire lock to page with id '4',
attempted for 1 minute out of allowed 1 minute. The thread that holds the 
lock has name 'ajp-bio-8009-exec-20'.

[Jun 24, 2014 11:28:40] WARN [org.apache.wicket.page.PageAccessSynchronizer]
- "ajp-bio-8009-exec-20" daemon prio=5 tid=40 state=RUNNABLE 

2 个答案:

答案 0 :(得分:2)

在处理页面时,Wicket会保留所有进一步的请求。这些将在可配置的IRequestCycleSettings#timeout()之后放弃。

检查您的网页为何需要很长时间才能回复。

答案 1 :(得分:1)

我在一个有很长数据库查询的页面上遇到过同样的问题。该查询预计会很长,因此预计该页面的加载时间会超过1分钟。但是,如果我点击其他页面,该页面将在第一个页面之后加载,并且如果它在一分钟内没有开始加载则超时,这里我得到了与您相同的错误。

我通过使用长数据库查询页面的延迟加载解决了这个问题。 AjaxLazyLoadPanel的示例是here

你可以做的第二件事就是svenmeier提出的建议并增加超时时间:

getRequestCycleSettings().setTimeout(Duration.minutes(3));

这仍然会使第二个请求等待第一个请求,但Wicket会给它更多时间。