阿里云对象存储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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式 五种不同的单例模式 懒汉式 饿汉式 枚举单例 容器化单例(Spring单例源码分析) 线程单例

单例模式 第一种 饿汉式 优点:执行效率高,性能高,没有任何的锁 缺点:某些情况下,可能会造成内存浪费 /*** author LionLi*/ public class HungrySingleton {private static final HungrySingleton hungrySingleton n…

05 动态渲染数据

概述 实际上动态渲染数据&#xff0c;在《使用CDN开发Vue3项目》中就已经学习过了&#xff0c;核心代码如下&#xff1a; <div id"vue-app">{{text}}</div> <script src"https://cdn.staticfile.org/vue/3.0.5/vue.global.js"></sc…

设计模式详解---单例模式

1. 设计模式详解 单例模式是一种创建对象的设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供全局访问点以获取该实例。 在单例模式中&#xff0c;类负责创建自己的唯一实例&#xff0c;并确保任何其他对象只能访问该实例。这对于需要共享状态或资源的情况非常有…

[楚慧杯 2023] web

文章目录 eaaevalupload_shell eaaeval 打开题目&#xff0c;源码给了用户密码 登陆后啥也没有&#xff0c;扫一下发现源码泄露www.zip <?php class Flag{public $a;public $b;public function __construct(){$this->a admin;$this->b admin;}public function _…

医疗智能化革命:AI技术引领医疗领域的创新进程

一、“AI”医疗的崛起 随着人工智能&#xff08;AI&#xff09;技术的崛起&#xff0c;"AI"医疗正在以惊人的速度改变着医疗行业的面貌。AI作为一种强大的工具&#xff0c;正在为医疗领域带来前所未有的创新和突破。它不仅在医学影像诊断、病理学分析和基因组学研究等…

京东体育用品销售数据分析与可视化系统

京东体育用品销售数据分析与可视化系统 前言数据爬取模块1. 数据爬取2. 数据处理3. 数据存储 数据可视化模块1. 数据查看2. 店铺商品数量排行3. 整体好评率4. 不同品牌市场占比5. 品牌差评率排名6. 品牌价格排名7. 品牌评论数量分布 创新点 前言 在体育用品行业&#xff0c;了…

ElasticSearch学习篇8_Lucene之数据存储(Stored Field、DocValue、BKD Tree)

前言 Lucene全文检索主要分为索引、搜索两个过程&#xff0c;对于索引过程就是将文档磁盘存储然后按照指定格式构建索引文件&#xff0c;其中涉及数据存储一些压缩、数据结构设计还是很巧妙的&#xff0c;下面主要记录学习过程中的StoredField、DocValue以及磁盘BKD Tree的一些…

实现el-table操作列点击弹出echarts

代码&#xff1a; <el-table-column :width"90"><template #default"scope"><el-popover placement"left-end" width"550" trigger"click"><div><div style"font-size: 18px; margin-left…

Harmony4.0鸿蒙应用开发初识+实践小案例

Harmony4.0鸿蒙应用开发初识实践小案例 一、华为的“18N”产品战略 在华为HarmonyOS及全场景新品发布会上&#xff0c;华为介绍了华为“18N”三圈层全场景智慧生态解决方案&#xff0c;从而打造面向未来的全新生态&#xff0c;其中&#xff0c;1指的是手机&#xff0c;8指的是…

Python Django 连接 PostgreSQL 操作实例

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是彭涛&#xff0c;今天为大家分享 Python Django 连接 PostgreSQL 操作实例&#xff0c;全文3500字&#xff0c;阅读大约10分钟 在Web开发中&#xff0c;使用Django连接到PostgreSQL数据库是一种常见的选择。…

云计算:Vmware 安装 FreeNAS

目录 一、实验 1.Vmware 安装 FreeNAS 2.配置Web界面 二、问题 1.iSCSI如何限定名称 2.LUN和LVM的区别 一、实验 1.Vmware 安装 FreeNAS &#xff08;1&#xff09;环境准备 VMware Workstation 17 FreeNAS相关安装部署镜像: 官网地址&#xff1a; https://download…

磁力计LIS2MDL开发(3)----九轴姿态解算

磁力计LIS2MDL开发.3--九轴姿态解算 概述视频教学样品申请完整代码下载使用硬件欧拉角万向节死锁四元数法姿态解算双环PI控制器偏航角陀螺仪解析代码 概述 LIS2MDL 包含三轴磁力计。 lsm6ds3trc包含三轴陀螺仪与三轴加速度计。 姿态有多种数学表示方式&#xff0c;常见的是四元…

手机上的python怎么运行,python在手机上怎么运行

大家好&#xff0c;本文将围绕python程序如何在手机端运行展开说明&#xff0c;python程序如何在手机上运行是一个很多人都想弄明白的事情&#xff0c;想搞清楚手机上的python怎么运行需要先了解以下几个事情。 如何用手机编程Python&#xff1f; 1.QPython3&#xff1a;这是一…

Vue 自定义搜索输入框SearchInput

效果如下&#xff1a; 组件代码 <template><div class"search-input flex flex-space-between flex-center-cz"><input type"text" v-model"value" :ref"inpuName" :placeholder"placeholder" keyup.enter&…

MySQL日志管理,备份与恢复

备份的主要目的是灾难恢复&#xff0c;备份还可以测试应用、回滚数据修改、查询历史数据、审计等。 而备份、恢复中&#xff0c;日志起到了很重要的作用 MySQL日志管理是数据库管理中的一个重要方面&#xff0c;它可以用于诊断问题、监控性能、进行故障恢复等。MySQL主要有几种…

VSCode 常用的快捷键和技巧系列(2)

一、如何让VSCode工程树显示图标 第一步&#xff1a;安装 快捷键 CtrlP &#xff0c;输入 ext install vscode-icons &#xff0c;然后点击安装插件 第二步&#xff1a;配置 安装成功后&#xff0c;点击Reload重新加载。 然后配置&#xff0c;当前图标使用VsCode-Icons Go…

1264. 动态求连续区间和(树状数组---某个位置加上一个数/求在线(动态)前缀和/蓝桥杯)

题目&#xff1a; 输入样例&#xff1a; 10 5 1 2 3 4 5 6 7 8 9 10 1 1 5 0 1 3 0 4 8 1 7 5 0 4 8输出样例&#xff1a; 11 30 35 树状数组&#xff1a; 代码&#xff1a; #include<cstdio> #include<iostream> using namespace std;const int N100010; int n,…

【Python从入门到进阶】44、Scrapy的基本介绍和安装

接上篇《43.验证码识别工具结合requests的使用》 上一篇我们学习了如何使用验证码识别工具进行登录验证的自动识别。本篇我们开启一个新的章节&#xff0c;来学习一下快速、高层次的屏幕抓取和web抓取框架Scrapy。 一、Scrapy框架的背景和特点 Scrapy框架是一个为了爬取网站数…

Qt/C++音视频开发60-坐标拾取/按下鼠标获取矩形区域/转换到视频源真实坐标

一、前言 通过在通道画面上拾取鼠标按下的坐标&#xff0c;然后鼠标移动&#xff0c;直到松开&#xff0c;根据松开的坐标和按下的坐标&#xff0c;绘制一个矩形区域&#xff0c;作为热点或者需要电子放大的区域&#xff0c;拿到这个坐标区域&#xff0c;用途非常多&#xff0…

linux应急响应基础和常用命令

linux应急响应 linux应急响应基础和常用命令基于linux系统本身进行应急响应。 系统基础信息获取 获取linux服务器基本信息 命令&#xff1a; uname -a内存cpu信息 cat /proc/cpuinfo cat /proc/meminfo lscpu free -m lsmod #查看载入的模块信息进程查看 动态进程查看 …