處理OSS上傳失敗一例


問題描述:

上傳oss雲存儲,無法成功,報錯:

2019-01-29 17:44:59,552 oss2.api [ERROR] 140080008111872 : Exception: {'status': 404, 'x-oss-request-id': '5C50209BAE509FEEA16D753E', 'details': {'Code': 'NoSuchKey', 'Message': 'The specified key does not exist.', 'RequestId': '5C50209BAE509FEEA16D753E', 'HostId': ' dsideal-yy.oss-cn-qingdao.aliyuncs.com', 'Key': 'AreaBackup/6C:92:BF:A4:E6:5E/Mysql/mysql-2019-01-29_17-10-31.tar.gz'}}
 
思路:
一直懷疑是因為系統時間不對,導致與OSS時間對比失敗,但查看 date -R,一切正常,蒙逼一天。
 
后續辦法:是不是系統時間除了date -R看到的時區,還有一個硬件的概念,就着手將硬件的時間、時區一並修改。
針對中國時區,修改操作如下
1. 修改文件 /etc/sysconfig/clock內容: ZONE=Asia/Shanghai UTC=false ARC=false 2. (針對同步時區不成功,執行下面步驟就行!!!) rm -rf /etc/localtime ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 

補充:

系統時間變化原因分析

Linux的時間有兩種,一是系統時間,另外是硬件時間(BIOS時間)。

系統每次啟動時會讀出BIOS時間,將之賦給系統時間。之后系統時間將獨立運行,而BIOS時間不會變化。

在BIOS時間中,有兩種表示形式。一種是以localtime表示的,一種是以UTC表示的。具體查看的方式可以通過hwclock –debug,該命令可以輸出當前硬件時間的表示形式。

 
下面例舉各種情況下系統時間的變化:

1.當hwclock設定為localtime,/etc/sysconf/clock 中的 UTC=true時,重啟后系統時間后相對於BIOS時間被提前8個小時。

2.當hwclock設定為localtime,/etc/sysconf/clock中的 UTC=false時,重啟后系統時間相對於BIOS時間沒有變化

3.當hwclock設定為UTC,/etc/sysconf/clock 中的 UTC=true時,重啟后系統時間后相對於BIOS時間無變化

4.當hwclock設定為UTC,/etc/sysconf/clock 中的 UTC=false時,重啟后系統時間后相對於BIOS時間被推后8個小時。

如下圖所示:

/etc/sysconf/clock中UTC=true
   
/etc/sysconf/clock中UTC=false

硬件時間 localtime
   
重啟后系統時間后相對於BIOS時間被提前8個小時   

系統時間無變化

硬件時間 UTC   

系統時間無變化   

重啟后系統時間后相對於BIOS時間被推后8個小時


可見,當BIOS時間設置的類型和 /etc/sysconf/clock中的設置不一致時,就會導致系統啟動時的系統時間錯誤。

如果有腳本實現時間同步,但是系統啟動之后運行的。雖然時間同步可以將系統時間同步到正確時間,但是由於之前的系統時間錯誤設定,將會出現一個錯誤的時間間隔,這個時間間隔可能會對依賴系統時間的程序產生影響。

對策:出現這種問題的根本原因是硬件時間的類型和 /etc/sysconf/clock中的設置不一致。所以我們將在時間同步腳本中增加對硬件時間的同步,這樣可以解決這種問題。

注:

UTC時間:世界協調時間(Universal Time Coordinated,UTC) ,也就是0時區的時間

CST時間:CST China Standard Time UTC+8:00 中國沿海時間(北京時間),這是我們所屬時區的localtime。

2.關於時區的設置:

為保證時間的正確,應該把時區設置正確。設置正確僅是為了使得時間更好理解和其他方面的維護。

設置方法:

1.       手動設置時區:

例如:設置東八區的時間

                ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

                編輯/etc/sysconfig/clock中 ZONE="Asia/Shanghai"

2.        使用圖形化命令設置

system-config-date (大部分情況僅限於RedHat和CentOS)或者使用 tzselect,按照命令提示進行即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM