我最近在日志中发现了这些警告。我不是线程或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
答案 0 :(得分:2)
在处理页面时,Wicket会保留所有进一步的请求。这些将在可配置的IRequestCycleSettings#timeout()之后放弃。
检查您的网页为何需要很长时间才能回复。
答案 1 :(得分:1)
我在一个有很长数据库查询的页面上遇到过同样的问题。该查询预计会很长,因此预计该页面的加载时间会超过1分钟。但是,如果我点击其他页面,该页面将在第一个页面之后加载,并且如果它在一分钟内没有开始加载则超时,这里我得到了与您相同的错误。
我通过使用长数据库查询页面的延迟加载解决了这个问题。 AjaxLazyLoadPanel的示例是here。
你可以做的第二件事就是svenmeier提出的建议并增加超时时间:
getRequestCycleSettings().setTimeout(Duration.minutes(3));
这仍然会使第二个请求等待第一个请求,但Wicket会给它更多时间。