簡體   English   中英

Java - 高CPU使用率

[英]Java - High cpu usage

我有一個在Tomcat中運行的生產Web應用程序。 Web應用程序使用struts 2作為MVC層。

我們遇到了一個問題,其中一個Web服務器飆升到100%的CPU使用率。 這個問題持續了幾個小時。 我接受了線程轉儲,並在可運行狀態下查看了數百個線程,並且轉儲顯示了大多數線程的相同堆棧跟蹤。

TP-Processor2" daemon prio=10 tid=0x00002aab80880c00 nid=0x5b4f runnable [0x0000000043bff000..0x0000000043c05d90]
   java.lang.Thread.State: RUNNABLE
        at java.util.HashMap.get(HashMap.java:303)
        at com.opensymphony.xwork2.util.LocalizedTextUtil.buildMessageFormat(LocalizedTextUtil.java:620)
        at com.opensymphony.xwork2.util.LocalizedTextUtil.getDefaultMessage(LocalizedTextUtil.java:588)
        at com.opensymphony.xwork2.util.LocalizedTextUtil.findText(LocalizedTextUtil.java:461)
        at com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:224)
        at com.opensymphony.xwork2.ActionSupport.getText(ActionSupport.java:99)
        at org.apache.struts2.components.Text.end(Text.java:158)
        at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:43)
        at org.apache.jsp.parts.myjsp_jsp._jspx_meth_s_005ftext_005f2(myjsp_jsp.java:296)
        at org.apache.jsp.parts.myjsp_jsp._jspService(myjsp_jsp.java:94)

現在,有問題的代碼使用struts s:text標簽,只是從屬性文件中獲取值。 我不確定為什么這么多線程會被卡在那里(線程處於可運行狀態)。

我可以幫助解決可能出錯的問題。

從左側字段開始猜測:您沒有正確同步多線程訪問。

java.util.HashMap不是線程安全的,如果多個線程同時訪問,一種特定的失敗模式是特定存儲桶中無限循環

看看有問題的地圖(由堆棧跟蹤指示),看看多個線程是否實際上能夠在沒有足夠同步的情況下訪問它。

暫無
暫無

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

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