最近發(fā)現(xiàn)一個(gè)線上項(xiàng)目運(yùn)行一段時(shí)間之后會(huì)僵死。程序不報(bào)任何異常,占有系統(tǒng)資源也都正常,就是對(duì)外提供不了服務(wù)了。
(友情提示:本博文章歡迎轉(zhuǎn)載,但請(qǐng)注明出處:hankchen,http://www.tkk7.com/hankchen)
根據(jù)經(jīng)驗(yàn),應(yīng)該是程序有死鎖情況,于是在線上運(yùn)行“jstack –F <pid>”命令,想把線程堆棧dump下來(lái)。
但是,發(fā)現(xiàn)這個(gè)命令老是報(bào)下面的錯(cuò)誤:
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
線上環(huán)境是:
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)
經(jīng)過(guò)分析發(fā)現(xiàn),這是JDK6u23之前版本的一個(gè)Bug,將JDK升級(jí)到最新版本(1.6.0_31)就可以解決問(wèn)題了。

(友情提示:本博文章歡迎轉(zhuǎn)載,但請(qǐng)注明出處:hankchen,http://www.tkk7.com/hankchen)