疑難排解Adobe Commerce的/tmp掛載已滿

本文提供當/tmp掛載已滿、網站可能已關閉,且您無法SSH連線至節點時的解決方案。

說明 description

受影響的產品和版本

Adobe Commerce 2.3.0 - 2.3.6-p1, 2.4.0 - 2.4.2

問題

/tmp掛載已滿可能會導致一系列可能的症狀,包括下列錯誤:

  • SQLSTATE[ HY000] :一般錯誤: 3寫入檔案時發生錯誤

  • 錯誤碼: 28

  • 裝置沒有剩餘空間(28)

  • error session_start(): failed:裝置​上已無剩餘空間

  • *錯誤1 (HY000):無法建立/寫入檔案'/tmp/* *

  • SQL錯誤: 3,SQLState: HY000

  • 一般錯誤: 1021磁碟已滿(https://experienceleague.adobe.com/tmp?lang=zh-Hant)

  • *無法透過SSH存取節點:

    bash:無法為here-document建立暫存檔:裝置上已無空間*

  • errno: 28 「裝置上已無空間」

  • mysqld:磁碟正在寫入'/tmp'

  • [錯誤] mysqld:磁碟已滿(https://experienceleague.adobe.com/tmp?lang=zh-Hant)

  • SQLSTATE[ HY000] :一般錯誤: 1無法建立/寫入檔案'/tmp/'

  • SQLSTATE[ HY000] :一般錯誤:開啟檔案'/tmp/'​時資源不足23

  • 錯誤碼: 24「開啟的檔案過多」

  • 發生錯誤: 23:開啟檔案時資源不足

要再現的步驟:

若要檢查/tmp掛載的滿度,請在CLI切換至/tmp並執行下列命令: df -h

預期結果:

低於80%。

實際結果:

大約100%。

原因

/tmp掛載有太多檔案,原因可能是:

  • 產生大型和/或太多臨時資料表的錯誤SQL查詢。
  • 服務正在寫入/tmp目錄。
  • 資料庫備份/傾印保留在/tmp目錄中。

解決方法 resolution

您可以做一些事來釋放一些空間,有一些最佳實務可防止/tmp用完。

檢查並釋出inode

確保有足夠的可用inode。 若要執行此動作,請執行以下命令: df -i

輸出將與以下類似: Filesystem Inodes Used Free Use% Mounted on /dev/nvme2n1 655360 1695 653665 1% /data/mysql

檢查Use%是否為< 70%。 Inode會與檔案相關聯。 如果您從分割區移除檔案,將會釋放inode。

檢查並釋放儲存空間

有數個服務可能會將檔案儲存至/tmp

檢查並釋放MySQL空間

遵循雲端基礎結構上Adobe Commerce的MySQL磁碟空間不足中的指示>檢查並釋放我們的支援知識庫中的儲存空間

檢查Elasticsearch棧積傾印

警告
棧放包含可能對調查問題有用的記錄資訊。 請考慮將其儲存在單獨位置至少10天。

使用系統殼層移除棧積傾印(*.hprof): find /tmp/*.hprof -type f -delete

如果您沒有許可權刪除其他使用者(在此案例中為Elasticsearch)建立的檔案,但您看到檔案很大,請建立支援票證加以處理。

檢查資料庫傾印/備份

警告
通常建立資料庫備份是出於某種目的。 如果您不確定是否仍需要檔案,請考慮將其移至另一個位置,而非將其刪除。

檢查/tmp.sql.sql.gz檔案,並加以清除。 這些可能是在備份期間或使用mysqldump工具手動建立資料庫傾印時由ece-tools建立的。

最佳做法

若要避免遇到/tmp已滿的問題,請遵循下列建議:

  • 請勿使用MySQL進行搜尋。 Elasticsearch的搜尋功能通常不需要建立大部分的大型臨時表格。 請參閱我們的開發人員檔案中的設定Adobe Commerce以使用Elasticsearch
  • 請避免在沒有索引的資料行上執行SELECT查詢,因為這會佔用大量的暫存磁碟空間。 您也可以新增索引。
  • 在CLI中執行下列命令,建立cron以清除/tmpsudo find /tmp -type f -atime +10 -delete
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f