如何解決資源過度使用問題

所有網頁寄存帳戶都會由CloudLinux LVE(輕量級虛擬環境)這種內建於伺服器核心層級的技術強制執行資源限制。這些限制確保所有網站都能公平且均等地獲得分配的資源份額。 

這些資源包括 CPU、實體記憶體、進入程序及活躍程序數量。你可以在我們的可接受使用政策中找到這些資源的可接受數值,以及其軟性和硬性突發值。 

當你的帳戶經常達到這些限制時,我們稱之為資源過度使用。這可能導致網站效能變慢、出現錯誤訊息或網站逾時。

注意:如果你寄存帳戶中的某個網域超出資源限制,所有同帳戶下的其他網域也會受到影響,因為它們共用同一資源池。

本文協助你識別及修復資源過度使用。

檢查你目前的資源使用情況 

要在 cPanel 檢查你的寄存帳戶資源使用情況,請查看右側顯示的統計資料區段:

注意:你也會在 Spaceship 帳戶內收到有關寄存帳戶資源限制的通知。不過,請參閱 cPanel 帳戶的「Hosting Usage」選單以獲取更完整資訊。

違反我們的可接受使用政策會在「Hosting Manager」選單中列出 > 點擊相關寄存方案旁的「管理」 > Hosting usage區段 > 報告日誌子區段。  

讓我們拆解一下主要資源指標,以及它們如何影響你網站的效能:

CPU 使用量

CPU 使用量顯示在任何時刻分配的 CPU 資源被使用的程度。它以你寄存帳戶總容量的百分比顯示。

如果 CPU 使用量達到100%,你的帳戶已經用盡所有分配的資源。因此,任何新程序都會被延遲(進入休眠),直到現有程序完成。這可能導致明顯的緩慢,嚴重時網站甚至會逾時。

虛擬記憶體使用量

這是指程序在你的LVE(輕量級虛擬環境)內可請求的記憶體數量。

當程序嘗試分配記憶體時,CloudLinux 會檢查總虛擬記憶體使用量是否仍在設定限制內。如果超出限制,新的記憶體分配會被阻止,通常會導致程序失敗。

實體記憶體使用量(RAM)

實體記憶體代表分配給你帳戶的實際 RAM。與虛擬記憶體(通常會使用磁碟儲存如 swap 檔案)不同,實體記憶體負責即時處理活躍任務。 

例如,發佈大型文章時可能會暫時用盡所有可用實體記憶體。雖然這可能導致短暫緩慢,但任務完成後,使用量通常會恢復正常。

如果你的實體記憶體使用量達到上限,網站可能會出現 PHP 錯誤。極少數情況下,可能會顯示 CloudLinux 錯誤頁面。這些問題通常很短暫,當使用量降至閾值以下時會自動解決。

進入程序

進入程序代表同時進入你帳戶的程序數量。每個用戶執行的 PHP 或 CGI 腳本都會啟動一個進入程序。雖然這常被誤解為「允許的訪客數量」,但這些程序通常執行及完成得很快,即使有多個用戶,你也不太可能達到上限——除非網站流量突然激增。

程序數量

此指標包括帳戶產生的所有程序,不僅限於 PHP、SSH 或排程任務。這是一個更廣泛的限制,反映總體活動。

即使在高負載下,這個數字通常也很低,因為大多數非 PHP 程序都很短暫並迅速完成。

I/O 使用量(輸入/輸出)

I/O 使用量衡量你的帳戶產生多少磁碟活動。任何涉及讀寫資料的操作——如備份或檔案上傳——都會計入這個限制。

為確保所有用戶都能獲得公平效能,每個帳戶的磁碟速度都有上限。如果你達到這個限制,你的程序仍會執行,只是速度會變慢。

大多數情況下,除非你執行磁碟密集型任務(如產生大型網站備份),否則你不會注意到 I/O 使用量。


定義帳戶上運行的活躍程序

如果你的寄存帳戶達到某些資源限制,第一步是識別哪些程序導致過度使用。

透過 SSH

如果問題持續多於幾分鐘,你可以使用 SSH 在資源高峰時檢查帳戶內運行的活躍程序:

  1. 請在 cPanel 的「管理 Shell」選單檢查 SSH 連線狀態,確保你的寄存帳戶已啟用 SSH。如果 SSH 尚未啟用,請依照這篇文章的步驟啟動。

  2. 請到 cPanel 的終端機選單,執行以下其中一個指令,以識別帳戶內的活躍程序:

    - ps faux
    - top -c

    你將會看到一份使用你寄存帳戶大部分資源(CPU、虛擬記憶體等)的程序清單。任務數量及其狀態(如活躍、休眠或已停止)也會在指令輸出中顯示。

    我們會向你展示「top -c」指令的輸出樣本,並提供正確理解的說明:


    以下是閱讀這類輸出的簡單指南:

    1. 第一行 - 指出目前時間、上次開機以來的時間、登入用戶會話,以及系統平均負載(過去 1 分鐘、5 分鐘和 15 分鐘)。

    2. 第二行 - 列出寄存帳戶內的所有程序:運行中、休眠、已停止及殭屍(已終止但未正確移除的程序)。

    3. 第三行 - 提供 CPU 使用情況(%),其中:

      • us = 用戶程序

      • sy = 系統程序

      • ni = 提升優先權 nice

      • wa = 等待 I/O 完成的時間

      • hi = 硬體中斷

      • si = 軟體中斷

      • st = 被 Hypervisor 任務搶佔的虛擬機時間

    4. 第四及第五行 - 顯示記憶體使用情況(RAM):總量、已用、可用及緩衝區。

    5. 接下來的行提供目前程序的詳細資料:

      • PID - 程序 ID

      • USER - 作為程序擁有者的 cPanel 用戶

      • PR - 程序優先權

      • NI - 程序的 nice 值

      • VIRT - 程序使用的虛擬記憶體

      • RES - 程序使用的實體記憶體

      • SHR - 程序使用的共用記憶體

      • S - 程序狀態(S - 休眠,D - 不可中斷休眠,R - 運行中,T - 已停止,Z - 殭屍)

      • %CPU - 此程序使用的 CPU 百分比

      • %MEM - 此程序使用的實體記憶體百分比

      • TIME+ - 程序使用的總 CPU 時間

      • COMMAND - 程序名稱


  3. 在懷疑遭到入侵時終止任何程序前,請先檢查 cPanel 帳戶的排程任務選單中的現有排程。如果發現任何可疑或不確定的排程,建議移除以防止潛在危險腳本運行。

    一旦你識別出造成問題的特定程序,可以在「終端機」選單執行 kill -9 PID SSH 指令,其中PID是前一步取得的程序 ID。

    如要終止所有非系統必要程序,可使用以下指令:

    ps aux | grep -v 'bin/bash' | awk '{ print $2 }' | grep -v PID | xargs kill -9

  4. 接下來,請識別目前正在運行的 MySQL 程序。

    你可以檢查 cPanel 帳戶的所有 MySQL 程序(1),或按 MySQL 用戶檢查(2)。

    請在 cPanel 的終端機開啟並執行以下其中一個指令:

    檢查整個寄存帳戶的 MySQL 程序:
    mysql -u $CPANEL_USER -p -e "SHOW PROCESSLIST;"

    檢查 MySQL 用戶的 MySQL 程序:
    mysql -u $MYSQL_USER -p -e "SHOW PROCESSLIST;"

    請務必將「CPANEL_USER」替換為你的 cPanel 用戶名(檢查帳戶程序,1),將「$MYSQL_USER」替換為特定 MySQL 資料庫用戶名(檢查個別用戶程序,2)。

    然後,輸入 cPanel 帳戶密碼(1)或特定資料庫用戶密碼(2):


  5. 最後一步是終止特定資料庫用戶的 MySQL 程序。這只能由我們的支援團隊執行。歡迎聯絡我們,我們很樂意協助你。

透過「資源使用」選單 

如果問題只持續幾秒鐘,可能難以識別造成問題的程序,因為這麼短的時間內資料不會被記錄。 

但你隨時可以在 cPanel 的資源使用選單檢查歷史趨勢。這有助於你識別模式或判斷哪些資源接近上限:


打開選單後,會在「儀表板」區段顯示有關經常觸及的資源的訊息,並標明具體限制: 

在選單的目前使用量區段,使用時間範圍下拉選單選擇期間,檢查帳戶資源在此期間的使用情況:


選擇後,你會看到圖表和表格顯示詳細統計資料:



以下是上表各數值的簡單說明:

  • CPU – CPU 限制

  • vMEM/vM – 虛擬記憶體限制

  • pMEM/pM – 實體記憶體限制

  • EP – 進入程序

  • nPROC/nP – 程序數量

  • IO – 輸入/輸出限制

  • A – 平均使用量

  • L – 帳戶設定的限制

  • F – 失敗

在 cPanel 終止活躍程序時的潛在問題

在 cPanel 停止活躍程序或有助於解決效能問題,但請小心操作——這可能會產生新問題。以下是一些需注意的重點:

  • 資料完整性:強制終止程序可能會損害資料完整性。特別是當該程序涉及帳戶內資料寫入或更新時。終止前最好確認該程序並非關鍵資料庫操作。

  • 未完成的交易:在操作中途停止程序可能會令交易未完成,並導致資料庫狀態出現問題。嚴重時甚至會造成資料損毀或遺失。

  • 服務中斷:某些程序(如 MySQL 相關程序)對核心服務極為重要。終止它們可能會導致暫時性服務中斷,影響網站功能。

  • 未儲存的變更:如果管理設定或配置的程序在變更儲存前被終止,可能會影響功能或應用程式的行為。

  • 資源分配:雖然終止程序可釋放系統資源,但並不能解決高使用率背後的根本原因。為防止問題重現,需進行更深入分析。

  • 應用程式穩定性:中斷與網頁應用程式相關的程序可能令其不穩定。採取行動前,請先了解程序運作方式。

  • 日誌與監控:部分程序負責日誌記錄或系統監控。終止它們可能會中斷這些功能,因此請確保關鍵日誌及監控工具維持運作。

    在關鍵情況下(如資源過度使用或懷疑惡意活動),即使有風險也可能需要終止程序。但請務必權衡潛在影響再採取行動。

降低終止程序風險的最佳做法

  • 備份你的數據:在進行重大更改前,特別是處理數據庫時,請務必先建立備份。

  • 盡可能使用受控關閉:嘗試逐步關閉程序,以減低數據遺失或損壞的風險。

  • 停用惡意組件:如果你懷疑網站的某個部分(例如插件或主題)產生惡意程序,請立即停用以防止進一步損害。如有疑問,請諮詢專家檢查可疑活動。

  • 使用維護模式:暫時將網站設為維護模式,有助於判斷某些程序是否會自動重新建立。

  • 密切監察:終止任何程序後,請仔細觀察系統行為,並準備好處理突發問題。

識別問題程序後如何減少資源使用

當你已確定哪些程序導致帳戶資源達到上限時,可嘗試以下常見方法減少使用:

  • 流量激增:如要查看帳戶何時有過多活動程序,請打開資源使用選單 > 快照 > HTTP 查詢分頁:


    如果你在輸出中看到有大量請求,例如指向 index.php 頁面,這可能是網站流量過高(例如訪客或機械人)所致。

    請檢查 AwstatsVisitors 選單(於 cPanel 內)以獲取詳細訪客分析,找出具體原因。流量突然增加可能導致資源使用上升。如果訪客數持續增長而你仍遇到限制,可能需要檢視並升級現有主機方案。

    Statistics 區域的 Awstats 選單可協助你找出高 CPU 使用來源。你可點擊網域名稱旁的「檢視」按鈕查看:


    注意: 請注意,Awstats 選單內的數據並非即時更新,僅提供每月統計。請確認統計數據的更新時間,以確保資訊與你的情況相關。你可在「最後更新」一行找到此資訊。

    進入後,你會看到網站各元素所耗用頻寬的詳細統計,包括:

    • 未知機械人:如這類流量並非預期,可透過 robots.txt 檔案封鎖、設置速率限制(例如針對 Googlebot),或利用 .htaccess 檔案及 User-Agent 字串強制封鎖。

      注意: 這些更改可能影響網站 SEO。如不確定是否要進行,建議先諮詢 SEO 專家。

    • 圖片:如果某張圖片收到大量請求,這可能代表該圖片正遭受 DDoS 或自我 DDoS 攻擊。

    • 頁面:網站頁面或其上的產品也可能受到 DDoS 攻擊影響。

    • 檔案

    • 已下載檔案等

  • 網站近期變更:如果這是你首次遇到資源使用問題,請檢查網站最近的更新或變更。這些可能導致負載增加。

  • 新插件或主題:如果你最近安裝了新插件或主題,請嘗試停用並監察網站效能至少 10 分鐘。

    此外,你可以在GTmetrix 報告 > Waterfall 分頁中找到載入緩慢的插件。

    注意:變更可能不會即時生效。我們建議你監察網站行為最多一小時,以獲得準確結果。

如果你仍然遇到資源問題,請透過即時聊天或電郵聯絡我們的支援團隊。我們樂意協助你識別及解決任何問題。

必須提供有效的電郵地址