Docker 容器中的网络优化与 DNS 缓存清理

在使用Docker 18.03.1-ce版本在Ubuntu 18.04 LTS上运行多个Docker容器时,我发现当使用requests库发送请求到某个主机名时,响应速度非常慢。在本例中,每个容器都有自己的CherryPy服务器,并通过requests.get('http://main:8083')或requests.get('http://controller:8082')的方式进行通信。所有的容器都属于一个Docker Compose stack,并由docker-compose创建了一个公共网络。

同样问题也出现在运行Windows操作系统的主机机器上,尝试获取一个本地页面时,请求工作正常。

值得注意的是,这个问题只在Ubuntu 18.04 LTS上运行的Docker主机上不存在,如果在主机机器运行bench.py程序,无论使用localhost还是127.0.0.1,都能正常工作。

解决方案:

为了更好地理解问题,我们使用了bench.py程序,该程序使用了urllib3和requests两个库发送请求并记录响应时间。

1. 对于urllib3:

我们首先使用urllib3库的PoolManager发送GET请求到localhost和127.0.0.1,并记录响应时间。结果显示,无论是localhost还是127.0.0.1,响应时间都很短。

2. 对于requests:

然后我们使用requests库的get方法发送GET请求到localhost和127.0.0.1,并记录响应时间。结果显示,无论是localhost还是127.0.0.1,响应时间都很短。

通过对比urllib3和requests的响应时间,我们可以看到,问题可能出在requests库中。

然后我们查阅了requests库的文档,发现requests库使用了urllib3库来进行HTTP请求。因此,我们猜测问题可能出在urllib3库上。

我们进一步查阅了urllib3库的文档,发现urllib3库在处理DNS解析时,会使用系统的DNS缓存。因此,我们猜测问题可能出在系统的DNS缓存上。

为了解决问题,我们可以通过以下步骤来解决:

1. 首先,我们可以在Docker主机上运行以下命令来清除DNS缓存:

```shell
docker-compose run --rm --network=compose_default bench bench.py
```

其中,'bench'是我们的Docker容器的名字,'bench.py'是我们的bench程序。

2. 然后,我们可以在Docker主机上运行以下命令来检查DNS缓存:

```shell
docker-compose run --rm --network=compose_default bench bench.py
```

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

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

相关文章

Nginx 413 Request Entity Too Large

当出现上图时候 更改nginx config 文件 在http{}或者server{}或者location{}中增加client_max_body_size 100m; 然后重启nginx 服务就好了

轻松搭建短域名短链接服务系统,可选权限认证,并自动生成证书认证把nginx的http访问转换为https加密访问,完整步骤和代码

轻松搭建短域名短链接服务系统,可选权限认证,并自动生成证书认证把nginx的http访问转换为https加密访问,完整步骤和代码。 在互联网信息爆炸的时代,网址复杂而冗长,很难在口头告知他人,也难以分享到社交媒体…

11 月 18 日 ROS 学习笔记——可视化和调试工具

文章目录 前言一、调试 ROS 节点1. gdb 调试器2. 在 ROS 节点启动时调用 gdb 调试器3. 在 ROS 节点启动时调用 valgrind 分析节点4. 设置 ROS 节点 core 文件转储5. 日志消息1). 输出日志消息2). 设置调试消息级别 二、检测系统状态1. rqt_graph2. 可视化坐标变换3. 保存与回放…

trzsz支持文件拖动到终端进行上传,类似lrzsz

考虑到 LapTop -> Host 1 -> Host 2 -> Docker -> TMUX,使用scp或sftp命令不方便;使用rz和sz命令就会方便很多,但是却又与 TMUX 不兼容(备注:Tmux是一个终端复用工具,允许用户在一个终端窗口中…

初学UE5 C++②

目录 导入csv表格数据 创建、实例化、结构体 GameInstance Actor camera 绑定滚轮控制摇臂移动 碰撞绑定 角色碰撞设定 按钮 UI显示 单播代理 多播和动态多播 写一个接口 其他 NewObject 和 CreateDefaultSubobject区别 导入csv表格数据 创建一个object的C类 …

设计模式-责任链-笔记

动机(Motivation) 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有个接受者,如果显示指定,将必不可少地带来请求者与接受者的紧耦合。 如何使请求的发送者不需要指定具体的接受…

视频剪辑方法:一键批量调整色调的高效技巧

在视频剪辑的过程中,色调调整是一项非常重要的工作。它能够改变影片的氛围、情感和视觉效果,更好地沉浸在影片的情境中。然而,对于许多视频剪辑师来说,批量调整色调是一项非常繁琐的任务,需要耗费大量的时间和精力。色…

Docker Desktop 配置阿里云镜像加速

阿里云搜索镜像,打开容器镜像服务,复制镜像加速器地址 Docker Desktop 右上角设置,选择 Docker Engine,在配置中添加阿里云的镜像地址,右下 Apply & restart 即可。 "registry-mirrors": ["https…

vmware workstation pro 17.5 安装 macos 13.5.2 虚拟机超详细图文教程

前言 本文很细,甚至有点墨迹,主要为了方便从来没用过 vmware 的新人,其实大部分步骤和正常安装虚拟机没有区别,详细贴图以方便大家对比细节 参考文章 感谢大佬们的无私分享 https://blog.csdn.net/qq_19731521/article/details…

idea中误删.iml和.idea文件,如何处理

目录 一、问题描述 二、解决方案 1、理论知识 (1).iml 文件 (2).idea文件 2、操作环境 3、操作步骤 (1)找到【Maven】工具按钮 (2)点图标,重复导入maven项目&am…

大批量合并识别成一个表或文档的方法

金鸣表格文字识别系统功能强大,其中可以将上百张图片或上百页PDF中的表格文字合并识别成一个表格或文档的功能尤其受到广大用户的欢迎,那应该怎么操作呢? 一、打开金鸣表格文字识别软件,点击左上角的“表格识别”,选择…

多因素方差分析(Multi-way Analysis of Variance) R实现

1, data0507 flower 是某种植物在两个海拔和两个气温下的开花高度,采用合适 的统计方法,检验该种植物的开花高度在不同的海拔之间和不同的气温之间有无差异?如果有差异,具体如何差异的?(说明依据、结论等关…

Codeforces Round 908 (Div. 2)

一个教训:做题的时候一定要自己模拟一遍所有样例,这样思路出来的很快!!! C. Anonymous Informant Example input Copy 6 5 3 4 3 3 2 3 3 100 7 2 1 5 5 6 1 1 1 1 1 1000000000 1 8 48 9 10 11 12 13 14 …

【springboot笔记】程序可用性检测ApplicationAvailability

1.背景 springboot-3.1.5 ApplicationAvailability LivenessState ReadinessState AvailabilityChangeEvent 我们可以通过ApplicationAvailability获取当前应用程序的可用性,这个可用性包括ApplicationContext和对外请求路由两种。 LivenessState 是表示Applicatio…

打开文件 和 文件系统的文件产生关联

补充1:硬件级别磁盘和内存之间数据交互的基本单位 OS的内存管理 内存的本质是对数据临时存/取,把内存看成很大的缓冲区 物理内存和磁盘交互的单位是4KB,磁盘中未被打开的文件数据块也是4KB,所以磁盘中页帧也是4KB,内存…

吴恩达《机器学习》8-7:多元分类

在机器学习领域,经常会遇到不止两个类别的分类问题。这时,需要使用多类分类技术。本文将深入探讨多类分类,并结合学习内容中的示例,了解神经网络在解决这类问题时的应用。 一、理解多类分类 多类分类问题是指当目标有多个类别时…

Vue3 常用组件

一、Fragment组件 Vue2 的template 模板中必须要有一个根标签,而我们在Vue3 的模板中不需要使用根标签就能渲染,因为Vue3 在内部会将多个标签包含在一个Fragment 虚拟元素中。 好处就在于可以减少标签的层级,减小内存占用。 二、Teleport组…

使用cli批量下载GitHub仓库中所有的release

文章目录 1\. 引言2\. 工具官网3\. 官方教程4\. 测试用的网址5\. 安装5.1. 使用winget安装5.2. 查看gh是否安装成功了 6\. 使用6.1. 进行GitHub授权6.1.1. 授权6.1.2. 授权成功6.2 查看指定仓库中的所有版本的release6.2.1. 默认的30个版本6.2.2. 自定义的100个版本6.3 下载特定…

springboot实现在线人数统计

在线人数统计 笔者做了一个网站,需要统计在线人数。 在线有两种: 一、如果是后台系统如果登录算在线,退出的时候或者cookie、token失效的时候就算下线 二、如果是网站前台,访问的时候就算在线 今天我们来讲一下第2种情况&…

大数据HCIE成神之路之数学(3)——概率论

概率论 1.1 概率论内容介绍1.1.1 概率论介绍1.1.2 实验介绍 1.2 概率论内容实现1.2.1 均值实现1.2.2 方差实现1.2.3 标准差实现1.2.4 协方差实现1.2.5 相关系数1.2.6 二项分布实现1.2.7 泊松分布实现1.2.8 正态分布1.2.9 指数分布1.2.10 中心极限定理的验证 1.1 概率论内容介绍…