iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
DevOps

30天WebSphere入門及經驗分享系列 第 15

D15/透過hung threads提示找出程式緩慢原因(一)

  • 分享至 

  • xImage
  •  

在WebSphere上有個我覺得非常實用的功能,就是ThreadMonitor。

WebSphere預設會每隔3分鐘,偵測Server上運作的程式,有沒有thread停住超過10分鐘的,如果有,就在TextLog中記錄下來。

如此一來,我們就可以透過定期檢查log,來看看是否程式在運作上是否都正常,有沒有效能的問題,
如果有,就可以進一步檢查,是哪段程式lock住了,lock住的原因是什麼?

以我自己的經驗來說,就有好幾次透過log裡面的紀錄,
發現程式效能上的問題並提早處理,並在問題影響範圍沒擴大之前及早修正。

這邊我就透過一段小程式來模擬hung的情況,

private void threadHung(int sec) {
    try {
        Thread.sleep(sec*1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

我把這段程式放在Demo的servlet裡面,透過param參數去控制要thread要sleep幾秒,
https://ithelp.ithome.com.tw/upload/images/20220929/201289731gB7sAa6l4.png
http://localhost:9080/Iron30/DemoServlet?action=threadHung&sec=1000
這邊我先跑個1千秒試試
從log可以看到
https://ithelp.ithome.com.tw/upload/images/20220929/20128973uFauzbUcTT.png
我在9/29/22 15:20:05:164 UTC 時執行了thrad hung的模擬程式 (thradhung是我印出來的)

到了[9/29/22 15:31:09:545 UTC]
差不多過了11分鐘左右的時候,ThreadMonitor發現了有個thrad 10分鐘沒反應

[9/29/22 15:31:09:545 UTC] 000000b6 ThreadMonitor W   WSVR0605W: Thread "WebContainer : 0" (00000078) has been active for 664,380 milliseconds and may be hung.  There is/are 1 thread(s) in total in the server that may be hung.
        at java.lang.Thread.sleep(Native Method)
        at java.lang.Thread.sleep(Thread.java:952)
        at rei1997.servlet.DemoServlet.threadHung(DemoServlet.java:63)
        at rei1997.servlet.DemoServlet.doGet(DemoServlet.java:38)
        .
        .
        .

這裡可以看到log裡面清楚記錄,這條thread是停在java.lang.Thread.sleep方法上了

1000秒,程式執行完畢後
ThreadMonitor會再印出log,紀錄它發現這條thread的已經執行完成了。

[9/29/22 15:36:45:166 UTC] 00000078 ThreadMonitor W   WSVR0606W: Thread "WebContainer : 0" (00000078) was previously reported to be hung but has completed.  It was active for approximately 1,000,002 milliseconds.  There is/are 0 thread(s) in total in the server that still may be hung.

大概就是這樣,
通常我檢查log都會下這樣的指令:

cd [log所在目錄]
grep 0605W TextLog\*.log

有沒有hung thread可以一目了然。
明天再補充一些相關設定,今天就先這樣吧。


上一篇
D14/調整Server的Heap Size (二)
下一篇
D16/透過hung threads提示找出程式緩慢原因(二)
系列文
30天WebSphere入門及經驗分享36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言