所以想問問這裡有沒有 Linux 專家能幫幫我。我現在在我不太擅長的領域摸索。
我的 TS-873A 最近在 TOP 上顯示過高的 CPU 負載。經常看到數值在 40 到 50 之間,而且一直降不下來。系統幾個月來基本沒什麼變化。好像是在升級到 h5.2.8.33559 之後才開始注意到這個問題。但應該不是韌體的問題,我已經降級又升級過好幾次了,情況都一樣。
我有向 QNAP 支援開過工單,但他們目前只說「你安裝了很多應用程式,停用 QSirch、停用 Container Station 等等。」我都試過了——沒用,負載還是沒降下來。而且我也不覺得這些會有影響,因為這些應用程式已經跑了好幾個月都沒問題。
我本來以為問題有解,因為前兩天負載都很正常,大約在 5 左右。結果昨晚又突然飆高。奇怪的是,昨晚我根本沒在 NAS 上做什麼或跑什麼。
更奇怪的是,透過 NAS 的網頁介面存取時,速度並沒有像負載 50 那樣慢到不能用。雖然有變慢,但還沒到無法使用的程度。不過還是比正常慢。
我覺得可能有某個程序出錯,可能產生了一些殭屍程序(zombie process),佔用資源和空間。問題是我找不到是哪個。我已經試著關掉幾乎所有「高用量」的應用程式,但都沒影響 CPU 負載。
所以來這裡問問看是不是有什麼 Linux 清理要做,或是有什麼 cron job 之類的。我真的不太確定。
這部分取決於「消耗」CPU 的進程優先級,依我看這並不算異常。
可以查看「uptime」的輸出來看平均值。
[~] # uptime
12:18:15 up 25 days, 21:38, load average: 0.15, 0.13, 0.13
試著用「top -n 1 >[logfile]」透過 cron 任務執行,或用 sleep 迴圈腳本來了解情況。
也可以查看 procstat 的細節來看看發生了什麼事
問題可能根本不是 CPU。檔案系統問題、硬碟快滿,或其他多種因素都有可能影響。
你有試過回滾到 4.5 版韌體嗎?哈哈(開玩笑的——算半開玩笑)
你也可以參考這些工具(有些需要安裝)
謝謝你。長時間過高的 CPU 負載是不正常的。經過最近一次重啟後,幾個小時前我已經讓情況穩定下來了。
17:53:21 up 7:47, load average: 2.91, 2.88, 2.87
所以這很不錯——這才是應該有的狀態!
我真正想看到的是哪些進程造成了負載。Top 只顯示佔用 CPU 百分比最多的進程,但這些進程未必真的對負載有很大影響。
我會去研究你提到的其他工具,也許其中有些能提供一些線索……
還有,不——4.5 不是選項。我反正是跑 Hero……
資源監視器,進入「處理程序」,然後點擊「CPU」兩次,將排序從高到低。
那只顯示了 CPU 百分比,而不是 CPU 負載。這兩者非常不同。
好吧,我可能聽起來像個傻瓜,但 QNAP 的 Linux 發行版似乎沒有 apt 指令。我想安裝 htop。
sudo apt install htop
在 QNAP 上要怎麼安裝這種「一般」的 Linux 指令?
嗯……我從 MyQNAP.org 軟體庫安裝了 Entware。沒有 APT 指令,或者路徑沒有定義到它……
抱歉,我無法提供進一步的建議。我從來沒有需要調查資源問題或直接安裝核心 Linux。
也許我只是運氣好,但我的系統在閒置狀態下使用的資源非常少。
login as: admin
admin@192.168.1.30's password:
[~] # uptime
14:27:57 up 27 days, 23:47, load average: 0.08, 0.07, 0.10
OneCD
12
apt 不是 Entware(或 QTS)的一部分。Entware 使用 opkg。範例:
opkg install htop
OneCD
14
請確保您已透過 SSH 以 admin 使用者身分登入。
OneCD
16
Entware 可以在一般使用者帳戶上運作,但你必須先載入(source)Entware 的設定檔,這樣你的 session $PATH 才會更新。
不過,使用 admin 帳戶會比較簡單。 
1個讚
OK。這樣可以了。
所以看起來我必須用管理員帳號來執行任何有關 Entware 的操作。我安裝了 HTOP,但無法在我的一般帳號下運行。
要怎麼改變這個設定呢?
另外,你知道有沒有什麼工具可以顯示每個程序對負載平均值(Load Average)貢獻的情況嗎?這才是我真正想看的——到底是什麼在佔用資源。我覺得這個工具好像也沒辦法顯示這個……
OneCD
18
你必須先載入 Entware 的 profile。請將 source 指令加入你的使用者 $HOME 下的 .profile 檔案。這個檔案預設是不存在的,所以你可能需要自行建立。
請用你偏好的使用者帳號透過 SSH 登入,然後執行以下指令:
echo '. /opt/etc/profile' >> $HOME/.profile
…然後登出 SSH 連線,再重新登入。現在你應該就可以使用 opkg 指令了。
1個讚
OneCD
19
系統負載平均值這個指標真的很棘手。我用 Linux 已經超過 20 年了,至今還在摸索。
我從來沒有因為硬體問題(RAM、網卡、硬碟等等)導致負載平均值上升,所以也沒真的坐下來研究到底哪裡出了問題。
不過簡單來說,這不完全是 CPU 負載的問題。論壇上最近一次的案例,最後發現是有瑕疵的記憶體條導致進程進入等待狀態。
希望有更有經驗的人能幫你診斷這個問題,因為這已經超出我的能力範圍了。
其實在 HTOP 中有相當多的自訂選項和資訊。讓我們來看看我在操作過程中會得到什麼,並檢查發生了什麼情況……