簡體   English   中英

Java堆棧轉儲-等待鎖定

[英]Java Stack Dump - waiting to lock

我們在JSP Web應用程序上使用Java 1.4,有時我們的Web應用程序完全停止運行。 用戶嘗試訪問主頁時,找不到他們獲得的頁面。

當發生這種情況時,我們運行堆棧轉儲,並使用武士,我可以看到幾個帶有相同消息的阻塞線程

at java.util.Collections$SynchronizedMap.get(Collections.java:1942)      
- waiting to lock <0x23e40898> (a 
java.util.Collections$SynchronizedMap)      at 
org.hibernate.tuple.EntityModeToTuplizerMapping.getTuplizerOrNull(EntityModeToTuplizerMapping.java:53)      at 
org.hibernate.tuple.EntityModeToTuplizerMapping.getTuplizer(EntityModeToTuplizerMapping.java:66)      at 
org.hibernate.type.ComponentType.getPropertyValues(ComponentType.java:353)      at 
org.hibernate.type.ComponentType.toLoggableString(ComponentType.java:379)      at 
org.hibernate.pretty.MessageHelper.infoString(MessageHelper.java:89)      at 
org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1355)      at 
org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1308)      at org.hibernate.loader.Loader.getRow(Loader.java:1206) 
     at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:580)      at 
org.hibernate.loader.Loader.doQuery(Loader.java:701)      at 
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)      at 
org.hibernate.loader.Loader.doList(Loader.java:2220)      at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) 
     at org.hibernate.loader.Loader.list(Loader.java:2099)      at 
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)      at 
org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)      at 
org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)      at 
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)      at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)      at 
org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:849)      at
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)      at 
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:840)      at
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:836)

我如何確定導致此線程中斷的原因。 我可以使用任何工具來識別這一點嗎?

謝謝


嗨,Mprivat,非常感謝。 我也會把這個帶給我們的架構師,看看我們是否可以完成升級。 由於這種情況僅偶爾發生一次,因此需要一些時間才能確定是否是原因。 我將在幾個月后反饋,因為只有時間可以打電話。 非常感謝

根據其他研究,在我之前的回答之前:

聽起來您正在使用的Hibernate版本早於3.2.6(解決了該缺陷)。 缺陷ID:HHH-2645

http://lists.jboss.org/pipermail/hibernate-issues/2008-February/009043.html


通常,您應該能夠將“等待鎖定<0x23e40898>”消息與“設置鎖定<0x23e40898>”消息進行匹配(拼寫可能會引起注意)。 進行完整的堆棧轉儲(順便說一下,您可以使用jstack,這是JDK的標准功能),然后搜索鎖ID。 您會看到很多等待,還有設置它的線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM