【日常总结】docker容器相互调用,占用服务器带宽解决方案

news2024/10/2 14:26:04

目录

一、场景:

1. 环境

2. 项目背景:

3. 全球时区解决方案

4. 方案二步骤

二、问题

三、产生原因

四、解决方案

五、解决步骤

六、整改效果


一、场景:

        docker容器相互调用,占用慢服务器带宽,导致netty连接的物联网设备集体掉线        

1. 环境

  • 阿里云服务器
  • 8核64G
  • 带宽:10M
  • docker:iot平台(微服务)
  • docker:mysql
  • docker:redis
  • docker:mongodb
  • 物联网设备使用 netty 连接 iot平台
  • 5000+ 台物联网设备在线,每分钟上报数据状态

2. 项目背景:

        最近物联网平台需要添加全球时区显示功能,服务器保存的创建/更新时间等相关19个接口,上线后发生网络带宽占满问题

3. 全球时区解决方案

  • 方案一:前端修改 -- 浏览器获取当地时区,通过时区编写函数计算19个接口返回的时间
  • 方案二后端修改 -- 用户绑定时区,接口返回时根据时区计算(存在异地登录漏洞问题

无奈,公司没有前端,只能后端处理

4. 方案二步骤

  • 根据请求header中token获取用户名username
  • 查询redis,key 为username的user对象(user包含时区)
  • 如果没有则根据username查询数据库获取user,并保存到redis中

二、问题

        世界时区显示上线后,发现物联网设备掉线80%以上,初步判定是网络问题。查看Grafana 发现网络带宽被占满

         阿里云管理后台查看服务器上网络监控带宽也异常

三、产生原因

  • 第一:方案二步骤中频繁查询数据库导致占用带宽
  • 第二:user对象中包含(设备列表等信息)数据量大,读写redis也占大量带宽
  • 第三:最主要原因,docker内部容器间访问,为什么占用外网带宽呢?
  • 原因是iot平台连接redis、mysql、mongodb均使用的是云服务外网ip+3个数据库映射的外网端口

四、解决方案

解决问题一:使用redis缓存user对象,降低mysql读写压力

解决问题二:重写查询方法尽量缩小user对象大小

解决问题三:

         1. 将iot微服务、redis、mysql、mongodb放入同一个network中   

         2. 在iot配置文件中连接数据库的ip更换成容器名即可  

五、解决步骤

  • Step 1:创建 network ,输入命令
docker network create xph-network
  • Step 2:docker-compose.yaml文件添加xph-network(iot、mysql、mongodb同样处理)

networks:
  default:
    external:
      name: xph-network

  • Step 3:重新构建 redis容器,输入命令 (iot、mysql、mongodb同样处理)

#进入redis的docker-compose.yaml根目录
cd /mnt/docker/redis

#重新构建redis
docker-compose up -d --build
  • Step 4:查看network详情
docker network inspect xph-network

结果如下

  • Step 5:修改 iot 连接数据库配置

将ip修改成容器名(见Step 4中的Name

  •  Step 6:重新构建iot即可
#进入iot的docker-compose.yaml根目录
cd /mnt/docker/iot

#重新构建redis
docker-compose up -d --build

六、整改效果

几乎不占服务器带宽

七、延伸:

1. 如果 redis、mysql、mongodb 在云服务器中,不在docker中,iot在docker中,会不会引发带宽占满问题?

2. 如何使用docker-compose安装redis、mysql、mongodb ?

3.安装mysql出现错误 libpthread.so.0- cannot stat shared object- Permission denied,如何处理?

请看下一节:数据库迁移

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

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

相关文章

go 切片(slice)原理及用法注意事项

切片(slice)定义 go语言中的slice是一种数据结构,其定义为一个结构体,如下所示; type SliceHeader struct {Data uintptr // 指向底层数组的指针Len int // 切片的长度Cap int // 切片的容量 }切片与数组 切片的底层数据存储结构是 数组切片较为灵活,能动态扩容,而数组是定…

vue2使用v-viewer实现图片预览ImagePreview

追溯&#xff1a; View UI Plus 是 View Design 设计体系中基于 Vue.js 3 的一套 UI 组件库&#xff0c;里面有个组件ImagePreview可以实现“图片预览”。 使用ImagePreview组件&#xff0c;报错&#xff1a; [Vue warn]: Unknown custom element: <ImagePreview> - d…

odoo15 标题栏自定义

odoo15 标题栏自定义 如何显示为自定义呢 效果如下: 代码分析: export class WebClient extends Component {setup() {this.menuService = useService("menu");this.actionService = useService("action");this.title = useService("title&…

在Docker 上完成对Springboot+Mysql+Redis的前后端分离项目的部署(全流程,全截图)

本文章全部阅读大约2小时&#xff0c;包含一个完整的springboot vue mysqlredis前后端分离项目的部署在docker上的全流程&#xff0c;比较复杂&#xff0c;请做好心理准备&#xff0c;遇到问题可留言或则私信 目录 1 安装Docker&#xff0c;以及简单使用参照 2 Docker部署m…

HOT100--(3)无重复字符的最长子串

点击查看题目详情 大思路&#xff1a; 创建哈希表&#xff0c;元素类型为<char, int>&#xff0c;分别是字符与其对应下标 用哈希表来存储未重复的子串&#xff0c;若有重复则记录下当前子串最大值maxhashsize 并且开始以相同方法记录下一子串 遍历完成以后&#xff0c…

Android OpenCV(七十三):吊打高斯模糊的StackBlur Android 实践

前言 OpenCV 4.7.0 2022年12月28日Release,ChangeLog中提到 Stackblur algorithm implementation. Stackblur是一种高斯模糊的快速近似,由Mario Klingemann发明。其计算耗时不会随着kernel size的增大而增加,专为大kernel size的模糊滤波场景量身定制。 使用建议:当kerne…

[RDMA-高级计算机网络report] Congestion Control for Large-Scale RDMA Departments

本文主要解决的问题是在RoCEv2体系中&#xff0c;基于优先级的拥塞控制PFC是一种粗粒度的机制。 它在端口&#xff08;或端口加优先级&#xff09;级别上运行&#xff0c;并且不区分流。PAUSE机制是基于每个端口&#xff08;和优先级&#xff09;的&#xff0c;而不是基于每个流…

mysql数据库之索引使用原则

一、最左前缀法则。 1、如果索引使用了多列&#xff08;联合索引&#xff09;&#xff0c;要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始&#xff0c;并且不跳过索引中的列。 如果跳跃到某一列&#xff0c;索引将部分失效&#xff08;后面的字段索引失效&am…

springboot启动时遇见的版本不同、无法启动、自动停止问题解决方案

Springboot项目启动失败初来乍到&#xff0c;听说springboot很好用&#xff0c;很简便&#xff0c;于是爱搞事情的我就打算试试&#xff0c;因为最近在找工作&#xff0c;很多软件开发的也要求springboot的使用&#xff0c;于是我就开启了springboot的学习之旅&#xff0c;打算…

Vue3 企业级项目实战:认识 Spring Boot

Vue3 企业级项目实战 - 程序员十三 - 掘金小册Vue3 Element Plus Spring Boot 企业级项目开发&#xff0c;升职加薪&#xff0c;快人一步。。「Vue3 企业级项目实战」由程序员十三撰写&#xff0c;2744人购买https://s.juejin.cn/ds/S2RkR9F/ 越来越流行的 Spring Boot Spr…

人工智能及其应用(蔡自兴)期末复习

人工智能及其应用&#xff08;蔡自兴&#xff09;期末复习 相关资料&#xff1a; 人工智能期末复习 人工智能复习题 人工智能模拟卷 人工智能期末练习题 1 ⭐️绪论 人工智能&#xff1a;人工智能就是用人工的方法在机器&#xff08;计算机&#xff09;上实现的智能&#xff0…

攻不下dfs不参加比赛(八)

标题 为什么练dfs题目重点为什么练dfs 相信学过数据结构的朋友都知道dfs(深度优先搜索)是里面相当重要的一种搜索算法,可能直接说大家感受不到有条件的大家可以去看看一些算法比赛。这些比赛中每一届或多或少都会牵扯到dfs,可能提到dfs大家都知道但是我们为了避免眼高手低有…

2.2 数据库的常用操作

文章目录1.分类2.创建数据库3.删除数据库4.查看所有数据库5.备份数据库6.数据库维护7.数据库使用与结构7.1 数据库的使用7.2 数据库结构虽然我们已经安装了可视化视图软件&#xff0c;但前期为了熟悉管理命令行的操作&#xff0c;我们暂时先在管理命令窗口进行操作&#xff1a;…

关于.bashrc和setup.bash的理解

在创建了ROS的workspace后&#xff0c;需要将workspace中的setup.bash文件写入~/.bashrc 文件中&#xff0c;让其启动&#xff1a; source /opt/ros/melodic/setup.bash这句话的目的就是在开新的terminal的时候&#xff0c;运行这个setup.bash&#xff0c;而这个setup.bash的作…

【2373. 矩阵中的局部最大值】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个大小为 n x n 的整数矩阵 grid 。 生成一个大小为 (n - 2) x (n - 2) 的整数矩阵 maxLocal &#xff0c;并满足&#xff1a; maxLocal[i][j] 等于 grid 中以 i 1 行和 j 1 列为中心的 3 …

搭建私人《我的世界》服务器,使用Cpolar内网穿透更简单

文章目录1.前言2.本地服务器搭建2.1 设置环境变量2.2 进行《我的世界》服务器端设置2.3 测试和使用3.本地MC服务器的内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置3.3.测试和使用4.结语1.前言 要说去年游戏圈的重磅大瓜&#xff0c;想必网易和暴雪的分家必能上榜。虽然两家大…

元宇宙对体育运动意味着什么?

欢迎来到Hubbleverse &#x1f30d; 关注我们 关注宇宙新鲜事 &#x1f4cc; 预计阅读时长&#xff1a;8分钟 本文仅代表作者个人观点&#xff0c;不代表平台意见&#xff0c;不构成投资建议。 Facebook将其品牌重塑为“Meta”&#xff0c;“元”的概念推向了主流&#xff…

如何退出PPT文件的“只读模式”?

PPT文件设置了“只读模式”&#xff0c;打开文件就会弹出对话框&#xff0c;提示【输入密码以修改或以只读方式打开】。 如果有密码&#xff0c;输入密码后可以正常修改编辑PPT&#xff0c;但下次再打开时仍旧会出现提示框&#xff1b;如果没有密码&#xff0c;选择【只读】可…

第十五届(2022年)山东省职业院校技能大赛高职组信息安全管理与评估竞赛试题

第十五届&#xff08;2022年&#xff09;山东省职业院校技能大赛高职组信息安全管理与评估 竞赛试题 第一阶段竞赛项目试题 根据信息安全管理与评估技术文件要求&#xff0c;第一阶段为网络平台搭建与网络安全设备配置与防护。本文件为信息安全管理与评估项目竞赛-第一阶段试题…

【正点原子FPGA连载】第二十一章AXI DMA环路测试 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十一章AXI D…