最近發現一個線上項目運行一段時間之后會僵死。程序不報任何異常,占有系統資源也都正常,就是對外提供不了服務了。
(友情提示:本博文章歡迎轉載,但請注明出處:hankchen,http://www.tkk7.com/hankchen)
根據經驗,應該是程序有死鎖情況,于是在線上運行“jstack –F <pid>”命令,想把線程堆棧dump下來。
但是,發現這個命令老是報下面的錯誤:
Thread 27316: (state = BLOCKED)
Error occurred during stack walking:
sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException: get_thread_regs failed for a lwp
線上環境是:
Linux 2.6.18-194.el5 x86_64 x86_64 x86_64 GNU/Linux
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
經過分析發現,這是JDK6u23之前版本的一個Bug,將JDK升級到最新版本(1.6.0_31)就可以解決問題了。
(友情提示:本博文章歡迎轉載,但請注明出處:hankchen,http://www.tkk7.com/hankchen)