阿里云对象存储OSS外网流出流量异常增多导致费用上升的解决方法

  本文介绍在使用阿里云对象存储 OSS服务过程中,外网流量消耗异常增多并导致异常的费用支出这一情况的问题发现、问题定位与几种不同的问题解决方法。

  细细数来,写博客已经有近3的历史了,这成为了一项已经陪伴我大半人生的工作;也因此,对于文案,尤其是图片存储需求愈发提升。一开始,因为博客都是首发在CSDN,所以就直接默认用CSDN的服务器作为图床;然而,在今年3月份,CSDN应该是对服务器中的图片文件加了防盗链,导致我在其他平台发表文章后出现无法显示图片的情况。针对这一问题,也是先后尝试了包括GitHub在内的多种免费、付费图床,具体搭建图床的方法大家可以查看文章GitHub与PicGo搭建免费稳定图床并实现Typora内复制自动上传(https://blog.csdn.net/zhebushibiaoshifu/article/details/129455228)。最终,确定使用阿里云的对象存储 OSS服务作为搭建图床的平台——一方面是稳定,另一方面主要还是它很便宜。

  但是,就在几天前,发现了由于对象存储 OSS服务中,外网流量异常导致的阿里云余额高速消耗情况。本文就对这一个问题的发现、定位与解决方法加以介绍。

1 发现问题

  周四大雪居家办公(但我还是去单位了)时,收到阿里云的短信;我本还开心地以为是收到他们家秋招Offer了,结果仔细一看是在提醒余额不足;如下图所示。

  当时就很奇怪——明明几天前刚续费,按照我当前云上的数据规模,怎么可能这么快就只剩下这么点钱了?所以,赶紧到工作台中查看情况。

  如下图所示,可以看到在12月开始至今(也就是收到上述提示短信的前2周的时间范围内),无论是已消耗的成本,还是预测的未来成本,确实环比上升了很多(当然这也没多少钱,但是和过往比起来确实上升了很多)。而且下图还是我在解决本文所述问题后截取的,最初收到短息、发现问题的那一天(即截图的前大概2天)环比上升的数值更高。

  从下图的消费趋势也可以看出来,从11月开始,费用就已经不太正常了,和之前的几个月比起来高了很多;尤其是12月,才刚刚过半,就又比11月明显高出来一截了。

  从下图也可以看出来,最开始几个月的费用,平均下来每个月也就是几块钱;但是最近的两个月,消费翻了5倍甚至10倍。

  再从我的充值记录中看一看,如下图所示。可以看到,之前充一次能用半年,现在充了同样的钱,但是1个月不到就又要付费了。由此可知,这个消费确实是有异常情况的。

  所以,首先定位一下是哪里出了问题。

2 定位问题

  首先,从服务的角度来说,在阿里云我只开通了对象存储 OSS1个需要付费的服务,如下图所示;也就是说,出问题的话一定是对象存储 OSS服务导致的。

  随后,进入对象存储 OSS服务的管理界面。对象存储 OSS服务主要有2个方面的计费因素——一个是容量,也就是存储的文件大小;还有一个是流量,就是调取其中某个或某些文件时,所用到的传输流量。如下图所示,可以看到对象存储 OSS服务中,我的容量是没有问题的——因为每个月都会写新的博客,图床会有新的文件进入,所以这个同比增长10%左右的数据还是应该没问题的。但是,流量中的外网流出流量,明显超出了上一个月——而且本月(12月)还只是刚刚过半,并没有完全结束,此时就比上个月多出来了这么多流量,显然是有问题的。

  基于上述分析,大概率知道是对象存储 OSS服务中,外网流出流量这里出了一些问题。接下来,针对这一假设加以进一步验证。如下图所示,在存储数据的文件大小上,可以看到最近2个月内并没有发生明显的变化。

  然而,在使用的流量方面,可以看到最近2个月内出现了极端的上升,如下图所示;且这一极值就出现在感觉费用出现异常的那几天里。

  其中,导致流量出现异常的就是“公网流出”这一项,如下图所示。由此,几乎可以确定,就是对象存储 OSS服务中,流出流量这里导致的费用消耗异常

  既然知道了是对象存储 OSS服务的问题,就深入到其中探究一下是哪个环节导致了流出流量出现异常极值。在我的对象存储 OSS服务中,只创建了一个Bucket,如下图所示;所以如果是对象存储 OSS服务的问题,那么就一定是这个Bucket的问题。

  在这个Bucket中,也可以看到确实是外网流出流量有问题;如下图所示。但是,由此首先可以确定访问端口都是正常的。

  随后,看一下这个Bucket中,存储容量流量(也就是下图中的“使用带宽”)随时间变化的情况,如下图所示。可以看到,同样的,还是容量没有问题,但是流量出现异常增长的情况。

  从“使用流量”界面可以更清晰地看到这一突变值的存在,如下图所示。

  其中,出现突变值情况的访问,多数都是GET请求,而PUT请求看起来还是正常的,如下图所示;那么说明我的图片上传操作是没有问题的,都是在自己或他人对图片加以获取下载操作时出了问题。

  此外,将访问次数最多的请求的Referer头对比一下,如下图所示;发现Referer头最多的是为空的情况,其次都是几个自己常用的博客平台的请求——这个也就很正常了,毕竟在不同平台发布时,都需要从这个Bucket中获取图片文件。但是,这里可以注意到,除了Referer为空,接下来最多的情况则是来自www.cnblogs.com的请求,表示这些请求是来自博客园的,而我确实也会在博客园中不定时发布一些文章。

  此外,将访问次数最多的IP地址对比一下,如下图所示;可以看到,访问最多的IP地址,其使用的流量远远超出其他的IP地址,为断层第一。

  通过搜索,发现这个IP地址是来自于浙江省杭州市的某个地方;如下图所示。

  从这个Bucket的统计信息中,也可以看到是来自浙江省的访问次数最多;如下图所示。

  通过上述分析,只能知道这个大概率出现异常的访问是来自于浙江省的,但是依然不确定它到底是谁。此时,想到了可以通过这个Bucket中,被访问次数最多的文件,来定位可能的访问来源。

  如下图所示,这里发现在最近的1周内,访问次数最多的几个文件,都有着相同的文件名称前缀;而我每一次传图到图床时,都是用时间戳来给文件命名的——也就是说,如果是同一篇博客文章中的图片,那么其在这个Bucket中的文件名就会非常接近,即其各自的文件名称前缀(就是表示日期小时的那几位数字)自然就会一致或者说比较接近。那么下图这种情况,表明大概率是我的某一篇文章被多次访问,导致其中所有具有相似文件名称前缀的图片都被多次访问了。

  那么,就复制一下上图中被访问次数最多的那一个文件的名称,然后到这个Bucket中按照文件名称搜索一下——发现它是和一篇空间点云数据三维建模相关的博客中的配图;如下图所示。

  因此,就到我发表博客的各类平台中,逐一搜索,看看到底哪一个平台最近发布了有关上述这一篇点云数据的博客,那么这个平台或许就是这些异常访问的源头。

3 确定问题

  经过对比,发现原来是博客园导致的这一问题。如下图所示,我在11月底、12月初的这一段时间里,不仅发布了上述空间点云数据三维建模相关的博客,还发布了另外2篇和空间三维建模相关的博客;而这3篇文章(下图中3个紫色框对应的文章),因为都和空间建模有关,所以其中均有着大量的图片,确实难免会出现更高的访问流量。

  其次,对比上图中和空间建模有关的3篇文章,可以发现其各自的发布时间(也就是上图中3个紫色框内的时间),正好对应了使用流量出现快速上升情况的3关键时间节点;如下图所示。

  再最后,直接打开博客园文章的后台,发现确实其中的图片URL都没有上传到博客园的服务器上,而都还是指向我这里阿里云的对象存储 OSS服务的这个Bucket,如下图所示。

  那么很显然了,只要每有1位用户打开我在博客园中发布的博客,那么博客园就会以客户端的角色,访问我的阿里云服务器,并获取其中的图片文件;而在获取(下载)图片的过程中,都是走的我对象存储 OSS服务的流量。

  至此,就已经明确了我们的问题所在。值得一提的是,前段时间也看到博客园说他们换到了杭州办公(如下图所示),那么这也和前面那个来自浙江省杭州市的高访问次数的IP地址对应起来了。

  明确了问题,就可以尝试解决了。

4 解决问题

  在这里,因为本文出现的这个问题只是简单地由于其他博客网站中图片没有上传到第三方服务器导致的,所以解决方法很简单——将这些图片传到第三方服务器就行了;如果大家无法通过这种情况来解决,那么本文还提供了其他2种方法,大家可以参考。

4.1 上传至第三方服务器

  这个方法很简单,既然之前写博客的时候没有将自己的图片上传到博客园的服务器(主要是我在这些非首发平台发布文章的话,都选择直接复制.md文件来发布,所以如果博客平台不自动转存图片的话,我自己也没意识到图片没有上传),那么就手动上传一下就好。如下图所示,博客园也是有这个自动上传的功能的,在编辑文章的界面点击右下角的“提取图片”即可。

  这样操作之后,我这里外网流量消耗异常增多并导致异常的费用支出的情况就得到解决了。

4.2 设置Bucket权限

  如果大家的情况不能用上述方法来解决,那么还可以考虑通过配置Bucket访问控制列表(Access Control List,ACL)给自己的Bucket设置读写权限;如下图所示,如果设置了“私有”,那么就只有自己可以访问这个Bucket,其他人就不行了。但是这样的话需要注意——如果有其他网站中图片的URL是指向这个Bucket的,那么那个网站中的图片自然也都会打不开了;因为只有你的云平台账户可以访问这个Bucket,其他第三方平台或个人都访问不了,自然也就显示不出来你的图片。

  如下图所示,我一开始也尝试着将权限设置为“私有”,发现随后就出现了许多绿色的4XX请求,如下图所示;这表明设置了权限后,很多第三方访问我的图片的请求都获取不到数据了。

4.3 设置防盗链

  此外,大家也可以给自己的Bucket设置防盗链防盗链相当于就是在所有访问你文件请求中,只允许不允许带有特定Referer头的请求获取数据,其他网站都不允许允许;如下图所示。

  如果大家明确知道有哪些第三方平台会正常地访问自己的Bucket,那么就设置防盗链的白名单即可;相反,如果大家只希望不让哪些第三方平台访问自己的Bucket,那么设置防盗链的黑名单即可。

  至此,大功告成。

欢迎关注:疯狂学习GIS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/227629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二十章总结

一.线程简介 二.创建线程 1.继承Thread类 Thread类中常用的两个构造方法如下: public Thread():创建一个新的线程对象。 public Thread(String threadName):创建一个名称为threadName的线程对象。 继承Thread类创建一个新的线程的语法如下: p…

设计模式 简单工厂 工厂方法模式 抽象工厂模式

工厂模式介绍 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。它是创建型模式。 简单工厂 简单工厂模式是指由一个工厂对象决定创建出哪一种产品类的实例, 但它不属于GOF 23种设计模式 简单工厂适用于工厂类负责创建的对象较少的场景,…

如何在Go中并发运行多个函数

引言 Go语言的一个流行特性是它对并发的一流支持,即一个程序可以同时做多件事。随着计算机从更快地运行单个代码流转向同时运行更多代码流,能够并发地运行代码正在成为编程的重要组成部分。为了让程序运行得更快,程序员需要把程序设计成并发运行,这样程序中并发的每一部分…

mmpose 使用笔记

目录 自己整理的可以跑通的代码: 图片demo: 检测加关键点 自己整理的可以跑通的代码: 最强姿态模型 mmpose 使用实例-CSDN博客 图片demo: python demo/image_demo.py \tests/data/coco/000000000785.jpg \configs/body_2d_k…

AE-制作绚丽的图形通道

目录 1.新建合成命名为四边形 2.在合成中新建纯色层命名为tao 3.在纯色层上添加RG Trapcode –>Tao 效果,设置Segment参数 4. 在合成中添加摄像机 5.设置Tao Repeat Paths 相关参数,并调整摄像机的位置 6.设置Tao的 Material & Lighting 等…

基于Springboot的高校教学评价系统的设计与实现(源码+调试)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于Springboot的高校教…

如何通过TortoiseGit可视化工具查看Git管理的版本树和信息(工作树变更)内容

一、版本树 黑色直线:master分支和基于master分支拉取基础分支都在这条线上,是一条直线。 其他线条:新开分支一定会增加一条线,但不一定每一条线分别代表一个分支。 注:如果一直是一个人,在同一个本地分支…

(三)Java 基本数据类型

目录 一. 前言 二. 基本数据类型 2.1. char(字符型) 2.2. byte(字节型) 2.3. short(短整型) 2.4. int(整型) 2.5. long(长整型) 2.6. float&#xff…

前端如何设置模板参数

1.背景: 最近接到一个需求,在一个类似chatGpt的聊天工具中,要在对话框中设置模板,后端提供了很多模板参数,然后要求将后端返回的特殊字符转成按钮,编辑完成后在相应的位置拼接成字符串。 2.效果&#xff1a…

C++ 类模板

目录 前言 类模板语法 类模板和函数模板的区别 类模板没有自动类型推导的使用方式 类模板在模板参数列表中可以有默认参数 类模板中成员函数创建时机 类模板对象做函数参数 指定传入的类型 参数模板化 整个类模板化 类模板与继承 类模板成员函数类外实现 类模板分…

在Spring Cloud中使用OpenFeign完成从一个微服务上传到另一个微服务中

跨服务上传文件,嘿嘿,来一篇实用性高的,本篇将主要完成在Feign中上传文件到另一个微服务中。步骤如下: 我们需要在服务提供者和服务消费者的项目中添加相应的依赖: 对于服务提供者的项目,你需要添加Sprin…

Redis设计与实现之集合及有序集

目录 一、集合 1、编码的选择 2、编码的切换 3、 字典编码的集合 4、集合命令的实现 5、 求交集算法 6、求并集算法 7、 求差集算法 二、有序集 1、编码的选择 2、编码的转换 3、ZIPLIST 编码的有序集 4、SKIPLIST 编码的有序集 三、如何添加元素到集合或有序集中…

万兆网络之屏蔽线序接法(中)

在介绍优质网线选购之前,先简单介绍一下水晶头 1毛钱一颗跟1元一颗的水晶头,往往是金手指厚度差别,你可以想象压制的时候可能会有什么情况 另外,一些3元一颗的镀金水晶头会有15U、30U之类的是电镀厚度单位,数值越大镀…

文档安全加固:零容忍盗窃,如何有效预防重要信息外泄

文档安全保护不仅需要从源头着手,杜绝文档在使用和传播过程中产生的泄密风险,同时还需要对文档内容本身进行有效的保护。为了防范通过拷贝、截屏、拍照等手段盗窃重要文档内容信息的风险,迅软DSE加密软件提供了文档加密保护功能,能…

10 新字符设备驱动文件

一、新字符设备驱动原理 因为 register_chrdev 和 unregister_chrdev 两个函数是老版本驱动文件,现在可以用新字符设备驱动 API 函数。 1. 分配和和释放设备号 使用 register_chrdev 函数注册字符设备的时候只需要给定一个主设备号即可,但是这样会带来两…

信息安全和网络安全的区别

信息安全与网络安全都属于安全领域,但它们的范围和重点不同。 信息安全主要关注数据的保护,包括对敏感数据进行加密、防止数据丢失或泄露等措施。信息安全通常与数据存储、传输和处理相关。 而网络安全更侧重于保护计算机系统和网络免受攻击、病毒、蠕…

Mac安装软件显示文件已损坏处理方法

今天安装软件,突然遇到了文件已损坏,扔到废纸篓的情况,于是搜索了下解决办法,跟大家分享下,希望对你有所帮助 一、检查安全性设置 打开【设置】-【隐私与安全】,下拉找到安全性,将安全性更改为…

System作为系统进程陔如何关闭?

一、简介 system进程是不可以关闭的,它是用来运行一些系统命令的,比如reboot、shutdown等,以及用来运行一些后台程序,比如ntfs-3g、v4l2loopback等。system进程也被用于运行一些内核模块,比如nvidia、atd等。system进程…

mars3d加载arcgis发布的服务,⽀持4523坐标

问题 1.从这个服务地址加载,具体在哪⾥去转坐标呢? 加个 usePreCachedTilesIfAvailable:false 参数即可 坐标系为4490的arcgis影像服务图层,配置后瓦片加载不出来,没报错 甚至可以跳转 没有看出问题,或者测…

linux系统启动时运行web程序

1.修改rc.local文件 执行命令如果找不到会报错command not found ,使用全路径即可 找不到的话 可以使用which 命令 找到路径 后台查看执行日志 2.修改rc.local文件的权限 chmod x rc.local 然后reboot 可以查到进程和启动日志