Unix
如何調試 Solaris 10 關閉時的靜默掛起?
我們在關閉新映像的 Oracle/Sun Solaris 10 SPARC 機器時遇到了神秘的掛起。它是可重複的(在同一個地方……據我們所知)。我們讓它在 5-10 分鐘內多次嘗試自行解決,但它從未取得進展。
我以前從未見過這種情況。
控制台上顯示的最後一件事
syslogd
是發送了信號 15。在我們禁用snmpdx
盒子之前,控制台上的最後一件事snmpdx
是發送了信號 15(在syslogd
發送信號 15 之後)。雖然很難找到,但在過去的 Solaris 時代,我會從經驗中更好地了解問題所在,然後可以通過腳本
echo
中的愚蠢(但有效)調試語句進一步縮小範圍。/etc/*.d
在圖片中使用 SMF,我不太確定從哪裡開始。
sync
我們在提示符下強制進行故障轉儲以{ok}
供以後分析,然後讓該框出現,因為它是生產伺服器並且我們計劃的停機視窗正在關閉。
/var/adm/messages
顯示沒有任何用處。您將如何調試這種情況?有沒有辦法停止隱藏關機時發生的事情,例如顯示正在做的每一件事?(自 Solaris 10 以來,我從不喜歡在啟動時隱藏了很多東西)
mdb
savecore 的 ps 顯示以下程序在掛起時執行(afsd 是 OpenAFS 客戶端,預計會有很多):> > ::ps S PID PPID PGID SID UID FLAGS ADDR NAME R 0 0 0 0 0 0x00000001 00000000018387c0 sched R 108 0 0 0 0 0x00020001 00000600110fe010 zpool-silmaril-p R 3 0 0 0 0 0x00020001 0000060010b29848 fsflush R 2 0 0 0 0 0x00020001 0000060010b2a468 pageout R 1 0 0 0 0 0x4a024000 0000060010b2b088 init R 1327 1 1327 329 0 0x4a024002 00000600176ab0c0 reboot R 747 1 7 7 0 0x42020001 0000060017f9d0e0 afsd R 749 1 7 7 0 0x42020001 00000600180104d0 afsd R 752 1 7 7 0 0x42020001 0000060017cb44b8 afsd R 754 1 7 7 0 0x42020001 0000060017fc8068 afsd R 756 1 7 7 0 0x42020001 0000060017fcb0e8 afsd R 760 1 7 7 0 0x42020001 00000600177f4048 afsd R 762 1 7 7 0 0x42020001 000006001800f8b0 afsd R 764 1 7 7 0 0x42020001 000006001800ec90 afsd R 378 1 378 378 0 0x42020000 0000060013aee480 inetd R 7 1 7 7 0 0x42020000 0000060010b28008 svc.startd R 329 7 329 329 0 0x4a024000 00000600110ff850 sh Z 317 7 317 317 0 0x4a014002 0000060013b3a490 sac
/var/svc/log 包含受 SMF 控制的所有服務的日誌文件。這至少是調試 SMF 程序問題的起點。
我同意大衛的觀點,請檢查該伺服器上沒有可能保持打開狀態的 NFS 掛載,並且該伺服器沒有掛載其他可能不可用的 NFS 文件系統。
使用 SMF 時,您仍然可以在腳本中執行老式的迴聲。只需進入 /lib/svc/method 並編輯即可。只是從那個程序列表中,我會說它與 AFS 相關,但我沒有使用它。