2小時後bitcoind 23.0神秘崩潰,接下來我該怎麼辦?
我的新比特幣節點執行了大約兩個小時,然後無緣無故地崩潰了。接下來我該怎麼做才能調試或解決問題?
這是我第一次執行比特幣節點。一般來說,我有很多執行 Linux 服務的經驗。我首先在具有 8 G RAM 和 1TB 硬碟的筆記型電腦上全新安裝 Ubuntu 20.04.1。我下載了比特幣核心 23.0 .tar.gz 文件並將其解壓縮到 /opt 中。為了執行 bitcoind,我創建了一個沒有 sudo 權限的單獨“比特幣”使用者。我將埠 8333 從我的路由器轉發到執行比特幣節點的筆記型電腦。
bitcoind -daemon
我在沒有自定義配置的情況下以使用者“比特幣”的身份啟動了 bitcoind 。我看著 bitcoind 開始了初始塊下載。我可以看到它正在按預期使用大量頻寬,並一直等到它將幾 GB 的數據下載到磁碟上。然後我就去睡覺了。
第二天早上,我希望看到頻寬仍在使用,並且磁碟上儲存了更多塊。相反,我看到沒有使用頻寬,並且 bitcoind 不再執行。.bitcoind/bitcoind.pid 文件仍然存在,但具有該文件中 ID 的程序不再執行。筆記型電腦未配置為“進入睡眠狀態”,我從另一台電腦上的 SSH 會話仍處於連接狀態且未被中斷。在 bitcoind 崩潰之前,下載的塊已經使用了大約 34 G 的磁碟空間。我看到一個大小為 79M 的 .bitcoin/debug.log 文件,最後一次修改時間是在我啟動 bitcoind 後大約兩個小時。我跟踪了那個文件,但沒有看到錯誤消息,只有看起來像正常日誌消息的內容。這是 debug.log 中的最後一行:
2022-08-28T05:11:25Z UpdateTip: new best=000000000000000012ef16fc2f2c7f6752a6affa988d98098f837260de9a8989 height=342602 version=0x00000002 log2_work=82.191226 tx=59049857 date='2015-02-08T21:31:10Z' progress=0.077785 cache=716.8MiB(5441897txo)
我的猜測是 bitcoind 遇到了錯誤並異常退出。這類問題調試起來很痛苦,我對開發人員表示同情。
如果有人願意/能夠給我一些指導,我願意採取措施幫助調試這個問題。例如,如果有人可以指向一個(官方!)調試版本,它會呈現一個堆棧跟踪(我注意到比特幣執行檔都被剝離了)。和/或使用 gdb 執行調試建構以擷取崩潰的說明。或者也許我可以執行一些額外的調試參數來記錄更多資訊 - 如果有人有興趣查看結果。
否則,如果沒有可用的調試指南,你們會建議我降級到非崩潰版本嗎?還是等到下一個版本?
更新 1:我在上面提到不,我的筆記型電腦沒有進入睡眠狀態。
更新 2:正如我在下面的評論中提到的,我很確定我沒有用完記憶體。這台機器有 8G 的 RAM,沒有其他任何東西在執行,當我檢查日誌以查看作業系統報告的任何 OOM 終止時,沒有。我確實在日誌中看到啟動時啟動了 OOM 殺手。
更新 3:正如下面評論中所建議的,我嘗試在前台模式下執行並打開調試日誌記錄:
bitcoind -nodaemon -debug
. 我在一個新的比特幣數據目錄上執行此操作,以從頭開始重新啟動初始塊下載。這次它在崩潰之前只執行了一個半小時,並顯示以下消息:2022-08-30T20:56:45Z UpdatedBlockTip: new block hash=0000000000000000175471627926fa912a59576262795b54ebd961c3167580c3 fork block hash=0000000000000000203dada33f89ef12aaa3995c390e0f575cf5d80901b79b49 (in IBD=true) Bus error (core dumped)
我想我找到了崩潰的可能原因。我看到了一些可疑的日誌消息:
[ 6067.607405] blk_update_request: I/O error, dev sda, sector 155782528 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
這讓我開始懷疑磁碟硬體錯誤。所以我執行了這個檢查:
$ sudo apt-get install smartmontools $ sudo smartctl -H /dev/sda smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.15.0-46-generic] (local build) Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: FAILED! Drive failure expected in less than 24 hours. SAVE ALL DATA. Failed Attributes: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 5 Reallocated_Sector_Ct 0x0033 001 001 050 Pre-fail Always FAILING_NOW 16376
… 我們終於得到它了。磁碟故障。一旦硬體開始出現故障,所有賭注都將取消。