疑難排解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以清除
/tmp:sudo find /tmp -type f -atime +10 -delete