阿里云对象存储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.rhkb.cn/news/218780.html

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

相关文章

持续集成交付CICD:Jenkins流水线操作Harbor仓库

目录 一、实验 1.Jenkins主节点安装Docker 2.Jenkins主节点安装Harbor 3.Jenkins从节点安装Docker 4.Jenkins流水线操作Harbor仓库 二、问题 1.Jenkins主节点登录Harbor仓库报错 2.Jenkins流水线里从节点操作docker报错 3.Jenkins流水线里从节点远程登录Harbor仓库报错…

智能优化算法应用:基于海洋捕食者算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于海洋捕食者算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于海洋捕食者算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.海洋捕食者算法4.实验参数设定5.算法…

如何在 Windows 10/11 上恢复已删除的 Word 文档

意外删除重要的 Word 文档可能会令人心碎。当文件恰好非常重要时尤其如此。关键数据的丢失可能会导致沮丧和恐慌,因为数小时的辛勤工作和有价值的信息似乎消失得无影无踪。然而,在您屈服于绝望之前,有个好消息。 有多种技术和工具可帮助您恢…

【linux】Debian不能运行sudo的解决

一、问题: sudo: 没有找到有效的 sudoers 资源,退出 sudo: 初始化审计插件 sudoers_audit 出错 二、可用的方法: 出现 "sudo: 没有找到有效的 sudoers 资源,退出" 和 "sudo: 初始化审计插件 sudoers_audit 出错&q…

全国职业院校技能大赛“大数据应用开发”赛项说明

1、赛项介绍 (1)赛项名称 全 国 职 业 院 校 技 能 大 赛 “大数据应用开发” 赛 项 https://www.vcsc.org.cn/ 大赛组织机构介绍 全国职业院校技能大赛(以下简称大赛)是教育部发起并牵头&#xff…

为uniDBGrid设置文字操作栏

为uniDBGrid设置文字操作栏,如下图的效果,用户点击审核,执行审核代码,点退回,执行退回代码: 对于Web应用界面,这是最常见的方式,那对于我等Delphi开发者来说,基于uniGUI该…

如何拍摄超级大像素图片,超级大像素有哪些应用

引言: 在数字摄影领域,超级大像素照片是指通过高像素的相机或拼接多张照片合成的照片。这样的照片具有更高的分辨率,细节更加清晰,绘画质感更强。那么如何拍摄超级大像素照片,超级大像素可以用在哪些领域呢。 一&…

云原生之深入解析亿级流量架构之服务限流思路与方法

一、限流思路 ① 熔断 系统在设计之初就把熔断措施考虑进去,当系统出现问题时,如果短时间内无法修复,系统要自动做出判断,开启熔断开关,拒绝流量访问,避免大流量对后端的过载请求。系统也应该能够动态监测…

实操Nginx(七层代理)+Tomcat多实例部署,实现负载均衡和动静分离

目录 Tomcat多实例部署(192.168.17.27) 1.安装jdk,设置jdk的环境变量 2.安装tomcat在一台已经部署了tomcat的机器上复制tomcat的配置文件取名tomcat1 ​编辑 编辑配置文件更改端口号,将端口号改为8081 启动 tomcat&#xff…

持续集成交付CICD:Jenkins使用GitLab共享库实现基于Ansible的CD流水线部署前后端应用

目录 一、实验 1.部署Ansible自动化运维工具 2.K8S 节点安装nginx 3.Jenkins使用GitLab共享库实现基于Ansible的CD流水线部署前后端应用 二、问题 1.ansible安装报错 2.ansible远程ping失败 3. Jenkins流水线通过ansible命令直接ping多台机器的网络状态报错 一、实验 …

【PostgreSQL】从零开始:(六)PostgreSQL-数据库目录文件结构及作用说明

数据库文件目录结构 ├── bin #系统工具目录 │ ├── clusterdb │ ├── createdb │ ├── createuser │ ├── dropdb │ ├── dropuser │ ├…

selenium+xpath爬取二手房标题

贝壳找房标题爬取需要注意的是,在页面中间有一个小广告 而他就在ul的li下面,当我们进行title所以输出时,会报错。 所以在进行页面解析之前必须把广告叉掉,不然也把广告那一部分的li给爬取下来了 所以,我们&#xff0…

开机0xc000000e修复方式,电脑出现错误代码0xc000000e

0xc000000e是Windows操作系统中的一个常见错误代码。错误代码0xc000000e表示操作系统无法找到正确的启动设备或引导记录损坏,导致电脑无法正常启动。今天的这篇文章将和大家分享一些关于开机0xc000000e修复的方法。 一.电脑出现开机0xc000000e的原因 开机出现0xc00…

微服务实战系列之ZooKeeper(中)

前言 昨日博主的第一篇ZooKeeper,对它自身具备的能力做了初步介绍。书接上文,马不停蹄,我们继续挖掘它内在的美,充分把握它的核心与脉络。 揭秘ZooKeeper Q:集群一致性协同是如何进行的 我们讲到分布式,…

设计模式之结构型设计模式(二):工厂模式 抽象工厂模式 建造者模式

工厂模式 Factory 1、什么是工厂模式 工厂模式旨在提供一种统一的接口来创建对象,而将具体的对象实例化的过程延迟到子类或者具体实现中。有助于降低客户端代码与被创建对象之间的耦合度,提高代码的灵活性和可维护性。 定义了一个创建对象的接口&…

持续集成交付CICD:Jenkins使用GitLab共享库实现基于SaltStack的CD流水线部署前后端应用

目录 一、实验 1.Jenkins使用GitLab共享库实现基于SaltStack的CD流水线部署前后端应用 2.优化共享库代码 二、问题 1.Jenkins手动构建后端项目流水线报错 一、实验 1.Jenkins使用GitLab共享库实现基于SaltStack的CD流水线部署前后端应用 (1)GitLa…

【Jenkins】Centos环境安装Jenkins(通过rpm安装)

在Centos操作系统中通过rpm安装Jenkins 参考官网 https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos 1、下载安装Jdk17 下载安装 # 更新您的系统,不一定需要 # sudo yum -y update # 安装将用于下载 Java 17 二进制文件的 wget 命令行工具。 s…

Python基础01-环境搭建与输入输出

零、文章目录 Python基础01-环境搭建与输入输出 1、Python概述 (1)为什么要学习Python 技术趋势:Python自带明星属性,热度稳居编程语言界前三 简单易学:开发代码少,精确表达需求逻辑;33个关…

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion 黑白老照片上色修复

在这个时代,我们习惯于拥有高清、色彩丰富的照片,然而,那些古老的黑白色老照片由于年代的久远,往往会出现模糊、破损等现象。 那么今天要给大家介绍的是,用 Stable Diffusion 来修复老照片。 前段时间 ControlNet 的除了上线了“IP-Adapter”模型以外还增加另一个…

【ArkTS】生命周期

页面生命周期 通常Entry修饰的组件称为页面,其拥有页面生命周期 onPageShow:页面每次显示时触发。onPageHide:页面每次隐藏时触发(通常是路由跳转到其他页面了)。onBackPress:当用户点击返回按钮时时触发…