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

news2025/1/23 11:12:24

在使用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.coloradmin.cn/o/1214617.html

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

相关文章

.NetCore手写一个 API 限流组件

首先如果APP 拥有游客模式,用户模式以及其他特殊权限。那就意味着需要 IP 限流、用户限流以及特殊权限的情况。 那我们直接实操一下,以 IP 限流作为参考案例,当然要以组件的形式编写,支持扩展。 首先我们创建一个抽象类接口&…

门禁管理超级麻烦,你方式用对了吗?

随着社会的不断进步和科技的飞速发展,安全管理成为我们日常生活和工作中至关重要的一环。在这个背景下,门禁监控系统逐渐崭露头角,成为保障各类场所安全的关键工具。 客户案例 企业办公楼 在现代企业中,保护办公场所的安全至关重…

线程锁的应用与示例代码

为了解决这个问题,可以使用线程锁来确保在提取zip文件中的每个文件时,同一时间只有一个线程可以访问文件。这样可以避免多个线程同时访问和写入文件,从而解决race condition的问题。以下是修改后的示例代码: python import reque…

<C++> 反向迭代器

我们知道正向迭代器的设计:begin迭代器指向第一个数据,end迭代器指向最后一个数据的下一个位置 。移向下一个数据,解引用得到数据的值,并根据容器储存方式的不同,容器有不同类型的迭代器。 注意:rbegin迭代…

Python Flask: 构建轻量级、灵活的Web应用

Flask是一个流行的Python Web框架,以其轻量级、灵活和易学的特性受到开发者的喜爱。本文将深入探讨Flask框架的各个方面,通过详实的示例代码,帮助大家更全面地了解和掌握这一强大的工具。 1. 安装与基本用法 首先,需要安装Flask。…

使用requests库解决Session对象设置超时的问题

在requests库的IRC频道中,提出了一个问题,即Session对象在requests库中没有一个可以全局设置的timeout属性,而是需要为每个请求传递timeout值,或者创建一个自定义子类来实现。 为了解决这个问题,可以向Session对象添加…

docker中怎么启动容器

1、首先在linux中使用以下命令来启动 Docker 服务: sudo systemctl start docker2、然后下面的命令显示所有的容器列表,包括正在运行和已停止的容器。 docker ps -a然后找到容器ID 3、使用 docker start 启动一个已停止的容器: docker s…

2024 年如何成为一名成功的漏洞赏金猎人?成长总结以及相关资料推荐

2024 年如何成为一名成功的漏洞赏金猎人?成长总结以及相关资料推荐。 很多狂热的黑客新手都很好奇,如何才能成为一名黑客。其实黑客也有黑帽、白帽、灰帽或红帽之类的称呼。黑帽黑客,指的是专门制造病毒木马、通过操作系统寻找漏洞牟取暴利,并且以个人意志为出发点,肆意攻…

X86 bios 中断大全

1、显示服务(Video Service——INT 10H) 00H —设置显示器模式 0CH —写图形象素 01H —设置光标形状 0DH —读图形象素 02H —设置光标位置 0EH —在Teletype模式下显示字符 03H —读取光标信息 0FH —读取显示器模式 04H —读取光笔位置 10H —颜色…

AI创作系统ChatGPT网站源码+详细搭建部署教程+支持DALL-E3文生图/支持最新GPT-4-Turbo-With-Vision-128K多模态模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

孩子看书用白光还是暖白光?最适合写作业台灯推荐

孩子看书用4000K的暖白光最好。要不是亲眼所见,真的很难想象一个台灯用处如此大,护眼效果非常明显。说起来很久没有用过护眼灯具了,这次用过之后有着明显的反差,如果能给孩子用,那将大大保障了孩子的用眼、护眼问题。我…

海康Visionmaster-环境配置:MFC 二次开发环境配置方法

1 新建 MFC 工程,拷贝 DLL:VM\VisionMaster4.0.0\Development\V4.0.0 \ComControl\bin\x64 下的所有拷贝到项目工程输出目录下,如下图所示,项目的输出路径是 Dll 文件夹。 2 通过配置 C目录和链接器的方式配置 VM 环境 2.1 C目录下添加附加…

2023年9月 少儿编程 中国电子学会图形化编程等级考试Scratch编程一级真题解析(判断题)

2023年9月scratch编程等级考试一级真题 判断题(共10题,每题2分,共20分) 26、在给舞台背景编写程序时,可以使用运动模块中的积木 答案:错 考点分析:考查运动积木相关知识,再舞台背景中编写程序,不能使用运动模块中的积木,所以错误 27、在位图模式下绘制的角色,无论…

arcgis--二维点、线转三维

利用【3D Analyst工具】-【3D要素】-【依据属性实现要素转3D】将点要素转换成三维点。二维点属性中需含有其点高程信息。原始输入数据点属性表如下: 利用【依据属性实现要素转3D】工具,将其转成三维点。参数设置如下: 点转三维后,…

QGIS结合CityEngine制作卫星图地形模型

参考 https://blog.csdn.net/qq_17523181/article/details/134136379 https://blog.csdn.net/qq_17523181/article/details/134306063 安装QGIS软件与CityEngine软件 一、QGIS获取卫星图 QGIS新建工程安装插件 加入卫星图(需要科学上网),目…

Spring6(三):面向切面AOP

文章目录 4. 面向切面:AOP4.1 场景模拟4.1.1 声明接口4.1.2 创建实现类4.1.3 创建带日志功能的实现类4.1.4 提出问题 4.2 代理模式4.2.1 概念4.2.2 静态代理4.2.3 动态代理4.2.4 测试 4.3 AOP概念4.3.1 相关术语①横切关注点②通知(增强)③切…

结构工程师软件 Naviate Core MEP for Revit 3.4 Crk

Naviate Fabrication - 先进的建模和制造命令,可提高 VDC 设计师、细节设计师和承包商的生产力和收入。 Naviate MEP - 通过 MEP 工程师和设计师的建模和参数提高效率 导航架构 Naviate Architecture 完全集成到 Revit 平台中,增强了 BIM 提供的协作可能…

ROC 曲线:健康背景下的应用和解释

一、介绍 在医疗保健领域,做出明智的决策对于改善患者治疗结果、有效分配资源和设计有效的诊断测试至关重要。受试者工作特征 (ROC) 曲线是一个强大的工具,在评估诊断测试的性能、区分健康个体和患病个体以及优化医疗保健干预方面发挥着至关重要的作用。…

Vue3-admin-template 框架实现表单身份证获取到 出生年月、性别

一. 首先需效验输入身份证信息是否正确&#xff1a; const sfzhChange () > {// 效验身份证号格式const reg /^[1-9]\d{5}(19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/; }; 二.绑定输入框 input 事件&#xff1a; <el-form-item label&q…

2023 年 数维杯(A题)国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2021年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 让我们来看看数维杯A题&#xff01; 问题重述 1、俯仰力矩和俯…