===============================================
2021/9/29_第1次修改 ccb_warlock
===============================================
最近都在忙個人的事,很久沒有整理學習筆記了,該篇是因為昨天客戶聯系我排查現場問題,而最終的結果我翻X出去也沒搜到過,所以在這里做個記錄,希望給有緣人提供一個新的方案來解決這個問題。
言歸正傳,客戶突然聯系說程序出現卡頓的問題,排查下來是上傳FTP失敗引起。
測試之后,使用非匿名賬號,下載是正常的,上傳提示“553 Could not create file”。
查了很多資料講到了selinux對vsftpd有攔截,但是對比開發環境和生產環境兩邊的配置、屬性都是一致的,也就是說其他資料的解決方案應該不是當前問題的解決方案(沒有按資料嘗試是因為生產環境的操作有嚴格的要求,如果服務掛了會很麻煩)
在沒有任何解決方案的時候,我想使用FTP的賬號登錄centos,然后在目錄下創建文件試試,服務器上創建文件是否還報權限問題,這時候轉機出現了:
touch: 無法創建“XXX”,設備上沒有空間
難道磁盤滿了?於是我用‘df -h’查看的分區對應的硬盤占用情況,果然磁盤占用100%(因為客戶的這個程序業務上需要不斷上傳圖片到指定的FTP服務器,如果FTP上傳失敗,就會導致本地圖片積壓,量上來之后導致程序出現卡頓的問題)。
解決方案:
由於是磁盤滿了導致報錯,一種方案是停機加硬盤,另一種是移走時間較遠的文件把磁盤空間騰出來。(最后現場和客戶商議的還是選擇了“移文件騰空間”的方式)
結論:
在本次遇到的問題中,是因為磁盤空間不足導致文件無法上傳保存到服務器上,導致ftp報“553 Could not create file”。
ftp報“553 Could not create file”,大部分原因可能是用戶權限的配置問題引起,然而還有一種可能就是磁盤滿了導致無法保存文件,針對這種情況ftp也是報553權限問題(我沒有程序無法保存的邏輯的開發經驗,只能懷疑是ftp對異常的判斷中不考慮磁盤滿了的情況,只要無法保存統統歸類為權限問題)。
參考資料:
1.https://cloud.tencent.com/developer/article/1721919