• 处理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,按照命令提示进行即可。

  • 相关阅读:
    小试牛刀,建立jsp网页与导出war包
    IDEA 官方背景与修改jsp模板以及字体大小
    类库日期和jsp导包
    eclipse配置
    mysql绿色版下载及应用
    创建一个学生信息表,与页面分离
    Tomcat配置
    c#简单加密和对称加密
    04面向对象基础
    ADO.NET复习——自己编写SqlHelper类
  • 原文地址:https://www.cnblogs.com/littlehb/p/10336609.html
Copyright © 2020-2023  润新知