容器化的MySQL性能如何

Docker 性能优化指南 Docker 性能优化是确保容器应用高效运行的关键,优化容器的资源使用、镜像构建、网络配置、存储管理等方面可以显著提升性能。 阅读详情

说到部署,Docker将便携性和易用性拉高到一个新水准。MySQL相关的Dockerfile和脚本已经发布很长时间,在开发社区的使用率也稳步增长。这一点也在意料之中。

在影响到MySQL性能的每个环节上,用户的典型担忧在于:容器化以后,在这些环节上是否存在显著的性能开销。为此,我们进行了充分的性能测试,下面我会对测试结果的某些细节进行探讨。

我们的关注点主要在MySQL实例的IO和网络性能,尤其是对比采用了不同存储选项的实例,以及docker bridge网络模式带来了多少性能开销。 测试的运行环境是:Oracle Server x5-2,处理器为2x Xeon E5-2660 v3(40硬件线程),256G内存,操作系统Ubuntu 16.04,Docker版本v1.11.2。

Docker有三种使用存储卷的方式:

1. 默认是通过使用数据卷。使用Docker内部volumes管理功能,将数据写入宿主机的某个目录。

2.指定宿主机上的一个目录,将其挂载到容器内的特定位置。

3.创建一个数据卷容器,然后将数据卷共享给其它容器。

Docker 镜像是由一组layer构成,每一个layer代表文件系统的差异。Docker的存储驱动负责叠加这些layer,进而构成一个镜像。然而,跳过docker存储驱动的数据卷和宿主机目录,在性能上接近原生的存储。AUFS是使用最广泛的docker驱动程序,因此我们使用它进行测试。

为了测试网络开销,我们分别对Docker host和bridge网络进行了测试,方法是创建容器时分别指定–net=host 或–net=bridged。创建容器时,默认采用bridge模式。Host模式只是在宿主机的网络栈上增加了容器,因此应该能够避免bridge模式带来的性能开销。

测试时,我们使用了一个自定义的配置文件。为了增加I/O负载,首先我们特意将缓冲池大小设置为数据库大小的10%左右。数据库大小是2358MB,所以缓冲池大小为256MB。然后,我们将缓存池大小逐渐增加到16384MB,观察Docker不受I/O限制时,会出现什么情况。

Docker运行MySQL时,自定义配置是很直接的。最简单的方式是创建容器时将/etc/my.cnf 挂载到容器中(-v /path/to/host/mycnf:/etc/mycnf)。你也可以修改容器,并将修改commit到镜像中,但是这种方法不太好,因为每次升级MySQL时,你都要设置一次。

我们已经使用 sysbench 进行了测试。我们运行以下命令,以便建立我们的测试数据库。

测试之前,先运行Warm-up测试,测试程序运行320s,见下方。然后运行完整的测试。每个测试运行三次,在下表的结果中反映了这三次运行的平均值。

在bridge模式下测试时,我们会在根据需要改变—mysql-host的地址。

测试结果如下:
机器和环境 读写 (TRANS/SEC)
直接运行在宿主机上 847
Docker Volume –net=host 857
Docker Hostdir –net=host 850
Docker Datacontainer –net=host 849
Docker Volume –net=bridged 868
Docker Hostdir –net=bridged 846
Docker Datacontainer –net=bridged 856

我们发现,I/O高负载情况下,不同的方式测试结果差异性更小。Docker运行MySQL并没有显著的I/O或网络瓶颈。从这个角度看,Docker平台上的MySQL与直接运行在宿主机上并没有显著差别。值得注意的是:Docker上运行时,采用不同的存储选项和不采用存储选项并没有显著差别。

之后,我们将缓存池大小调整到16384MB,观察I/O负载低时,会发生什么情况。然后我们重新运行了一次测试用例。

结果如下:
机器和环境 读写 (TRANS/SEC)
直接运行在宿主机上 12686
Docker Volume –net=host 12201
Docker Hostdir –net=host 12180
Docker Datacontainer –net=host 12233
Docker Volume –net=bridged 11698
Docker Hostdir –net=bridged 11644
Docker Datacontainer –net=bridged 11662

结果表明,与直接运行在宿主机上的MySQL相比,运行在Docker上有一定的性能开销。网络上也存在微小的开销。仍然需要注意的是,docker不同的存储选项之间,性能并没有实际的差别。

结论

一个关键因素是I/O负载,I/O负载过高会抹平MySQL在Docker和宿主机上的差异。当不受I/O负载影响时,Docker显示出小幅度的瓶颈,尤其是运行在bridge网络模式下时。

综合来说,docker不同的存储选项不会对MySQL性能产生较大影响,因此可以随意选择存储。非常重要的一点是,将MySQL运行在容器中时,要通过配置,对其进行性能调优。

容器化MySQL已经在测试和开发环境中大量使用,我们的测试结果也显示在生产环境中选择容器化MySQL并不需要性能方面的考虑。

原文链接: http://mysqlserverteam.com/mysql-with-docker-performance-characteristics/


从零到一:Docker与MySQL 8.x的容器化部署实战与性能调优 本文详细介绍了从零开始使用Docker部署MySQL 8.x的完整流程,包括基础环境准备、镜像选择、容器启动参数配置、性能调优及安全加固等关键步骤。通过实战案例和性能优化建议,帮助开发者快速掌握容器化MySQL的部署技巧,提升数据库管理效率。特别针对Docker与MySQL的初始设置提供了专业指导。 阅读详情

相关推荐

Docker容器化OpenResty+Lua+MySQL+Redis Cluster高性能Web后端环境实战

在现代Web应用架构中,容器化技术已成为实现环境一致性和快速部署的核心手段。Docker通过将应用及其依赖打包成标准化的镜像,从根本上解决了开发、测试和生产环境差异的难题。其原理基于操作系统级虚拟化,利用命名空间和控制组实现资源隔离,为微服务架构提供了轻量级、可移植的运行环境。这一技术的工程价值在于显著提升了开发效率、简化了CI/CD流程,并确保了应用在不同基础设施上行为的一致性。在构建高性能Web后端服务时,常需整合Nginx网关、业务逻辑处理层、数据库和缓存等多个组件。OpenResty通过将Lua虚拟

weixin_30924087的博客 668

MySQL容器化之后的缺点_容器化的MySQL性能如何?

说到部署,Docker将便携性和易用性拉高到一个新水准。MySQL相关的Dockerfile和脚本已经发布很长时间,在开发社区的使用率也稳步增长。这一点也在意料之中。在影响到MySQL性能的每个环节上,用户的典型担忧在于:容器化以后,在这些环节上是否存在显著的性能开销。为此,我们进行了充分的性能测试,下面我会对测试结果的某些细节进行探讨。我们的关注点主要在MySQL实例的IO和网络性能,尤其是对比...

weixin_30694389的博客 929

从0到1:打造高性能.NET Core应用容器化部署,MySQL和Nginx无缝集成实战!

本文介绍了一个高效部署.NET Core应用的容器化方案,通过Docker和Docker Compose整合.NET Core、MySQL和Nginx,实现一键部署。内容涵盖从环境准备、项目创建到Dockerfile编写和docker-compose.yml配置的完整流程。该方案将部署时间从3小时缩短至5分钟,确保环境一致性并支持快速回滚。文章提供了详细的代码示例和配置注释,特别适合需要快速部署.NET Core应用的生产环境场景。

墨夶的博客 1408

docker:安装mysql以及最佳实践

docker安装mysql的最佳实践

分享前端开发工程师的一些日常生活、前端知识点、职业发展、对一些问题的看法、感悟等等 1271

Qt+VS集成高德红外相机SDK与OpenCV的采图实践

本文详细介绍了在Qt和Visual Studio环境中集成高德红外相机SDK与OpenCV的完整实践方案。涵盖环境配置、SDK初始化、图像采集与处理、多线程优化等关键技术点,重点解决了高德红外相机数据转换、温度信息提取和Qt界面显示优化等核心问题,为红外图像处理应用开发提供可靠参考。

palm99的专栏 645

ADS与Cadence中Verilog-A文件的编译与调用实战指南

本文详细介绍了在ADS与Cadence平台中Verilog-A文件的编译与调用实战指南,涵盖开发环境配置、模型创建与编译、仿真设置技巧以及跨平台协作与调试等内容。通过具体案例和优化策略,帮助工程师高效完成混合信号仿真设计,提升电路建模与验证效率。

weixin_29196315的博客 496

美团面试:MySQL为什么 不用 Docker部署?

MySQL 是一个有状态的服务,因为它需要持久化存储数据。在使用 Docker 部署 MySQL 时,如果不进行适当的配置,容器关闭后数据会丢失。因此,需要将数据文件挂载到宿主机上,以确保数据的持久化。Docker 容器化技术提供了许多显著的优势,包括自动伸缩、容灾、切换、开发与生产一致性、快速部署和隔离性等。这些优势使得 Docker 成为现代软件开发和部署中不可或缺的工具。通过合理使用 Docker 和 Kubernetes 等工具,可以大大提高系统的可扩展性、可靠性和维护性。

架构师尼恩 2351

【论文复现】自动化细胞核分割与特征分析

HoVer-Net是一种精心设计的多分支深度学习网络架构,专为处理复杂的多组织显微图像中的细胞核实例分割与精确分类任务而开发。该网络通过创新的策略,不仅有效解决了细胞核在密集聚集区域难以准确区分的问题,还实现了对每个独立细胞核类型的细致分类。此外,HoVer-Net还引入了专门的上采样分支,这一设计旨在对每个成功分割出的细胞核实例进行进一步的核类型分类。这一分支利用高级语义信息,结合精心设计的分类策略,能够准确判断每个细胞核的所属类型,为医学研究提供了宝贵的细胞水平信息。

2201_75366661的博客 1978

mysql容器化后的缺点_容器化的MySQL性能如何?

原标题:容器化的MySQL性能如何?说到部署,Docker将便携性和易用性拉高到一个新水准。MySQL相关的Dockerfile和脚本已经发布很长时间,在开发社区的使用率也稳步增长。这一点也在意料之中。在影响到MySQL性能的每个环节上,用户的典型担忧在于:容器化以后,在这些环节上是否存在显著的性能开销。为此,我们进行了充分的性能测试,下面我会对测试结果的某些细节进行探讨。我们的关注点主要在MyS...

weixin_42494160的博客 840

RabbitMQ的使用(JAVA)

Java快速上手的MQ上线!

.............. 1万+

从勒索软件攻击到数据重生:SQL Server MDF文件修复的实战生存指南

本文详细介绍了SQL Server MDF文件在遭遇勒索软件攻击后的修复策略,重点解析了Recovery Toolbox工具链的应用流程。从灾难评估到数据验证,提供分阶段修复操作、高级修复技术及防御加固方案,帮助企业快速恢复数据库并提升安全防护能力。

weixin_28327051的博客 715

MySQL容器化之后的缺点_容器化的MySQL性能如何

说到部署,Docker将便携性和易用性拉高到一个新水准。MySQL相关的Dockerfile和脚本已经发布很长时间,在开发社区的使用率也稳步增长。这一点也在意料之中。在影响到MySQL性能的每个环节上,用户的典型担忧在于:容器化以后,在这些环节上是否存在显著的性能开销。为此,我们进行了充分的性能测试,下面我会对测试结果的某些细节进行探讨。我们的关注点主要在MySQL实例的IO和网络性能,尤其是对比...

weixin_32818919的博客 591

SCS 43. 利用Scissor算法从单细胞数据中挖掘临床表型关联的细胞亚群

本文详细介绍了Scissor算法在单细胞转录组数据分析中的应用,该算法能够精准挖掘与临床表型关联的细胞亚群。通过建立单细胞RNA测序数据与临床预测模型的直接关联,Scissor避免了传统聚类方法的局限性,为疾病机制研究和个性化医疗提供了新工具。文章还涵盖了数据预处理、模型选择、结果验证等实战技巧。

weixin_28736335的博客 492

mysql docker 高性能_容器化的 MySQL 性能如何?

说到部署, Docker 将便携性和易用性拉高到一个新水准。 MySQL 相关的 Dockerfile 和脚本已经发布很长时间,在开发社区的使用率也稳步增长。这一点也在意料之中。在影响到 MySQL 性能的每个环节上,用户的典型担忧在于:容器化以后,在这些环节上是否存在显著的性能开销。为此,我们进行了充分的性能测试,下面我会对测试结果的某些细节进行探讨。我们的关注点主要在 MySQL 实例的 IO...

weixin_35298139的博客 1897

基于 C# 实现 RTSP 摄像头监控分屏系统:从流媒体获取到多画面显示

通过本文的讲解,我们介绍了如何在 C# 中实现 RTSP 摄像头监控分屏系统。我们使用了FFmpeg和VLC两种不同的方法来获取和解码 RTSP 流,并通过PictureBox控件和控件实现了分屏布局。两种解码方案都非常强大,可以根据实际需求选择最适合的方案。通过这种方式,您可以轻松地在 C# 中集成 RTSP 流,并将多个摄像头的视频流实时显示在同一屏幕上,进行监控和分析。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2307

初学者入门YOLO目标检测:从懵圈到上手,这篇文章讲透所有核心(附学习路径+避坑指南)

目标:比如训练一个“检测苹果和橘子”的模型,或者“检测人脸”的模型;任务:学会用LabelImg标注数据,制作YOLO格式的数据集,用命令行训练模型;关键:不用追求高精度,能训练出一个能检测出目标的模型就行。很多初学者卡在入门阶段,不是因为智商不够,而是因为“想太多,做太少”——总觉得要把所有原理搞懂才能动手,结果越想越怕,最后放弃。先动手,再动脑。先跑通一个案例,获得成就感;再制作自定义数据集,训练简单模型;最后再回头去理解原理,优化模型。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 689

mysql容器化后的缺点_容器化的 MySQL 性能如何?

说到部署, Docker 将便携性和易用性拉高到一个新水准。 MySQL 相关的 Dockerfile 和脚本已经发布很长时间,在开发社区的使用率也稳步增长。这一点也在意料之中。在影响到 MySQL 性能的每个环节上,用户的典型担忧在于:容器化以后,在这些环节上是否存在显著的性能开销。为此,我们进行了充分的性能测试,下面我会对测试结果的某些细节进行探讨。我们的关注点主要在 MySQL 实例的 IO...

weixin_29603829的博客 644

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

docker mysql 优化_Docker容器化的MySQL性能分析

说到部署,Docker将便携性和易用性拉高到一个新水准。MySQL相关的Dockerfile和脚本已经发布很长时间,在开发社区的使用率也稳步增长。这一点也在意料之中。在影响到MySQL性能的每个环节上,用户的典型担忧在于:容器化以后,在这些环节上是否存在显著的性能开销。为此,我们进行了充分的性能测试,下面我会对测试结果的某些细节进行探讨。我们的关注点主要在MySQL实例的IO和网络性能,尤其是对比...

weixin_32688333的博客 2255

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

mysql容器化后的缺点_沙场秋点兵——MySQL容器化性能测试对比

容器技术改变了应用交付、运行的方式,几乎各种Linux环境下的应用程序都可以使用容器来运行。但是否能在容器环境里运行数据库应用,以及数据库应用是否适合在容器里运行,一直都是大家很关注的问题,今天我们就来深入分析一下容器环境运行MySQL数据库的事。在容器中运行数据库,能帮助用户提高服务器利用效率,降低基础架构成本,更快速地部署、更便捷地管理数据库服务。根据云监控供应商Datadog的调查报告, P...

weixin_29098391的博客 754

沙场秋点兵——MySQL容器化性能测试对比

容器技术改变了应用交付、运行的方式,几乎各种Linux环境下的应用程序都可以使用容器来运行。但是否能在容器环境里运行数据库应用,以及数据库应用是否适合在容器里运行,一直都是大家很关注的问题,今天我们就来深入分析一下容器环境运行MySQL数据库的事。 在容器中运行数据库,能帮助用户提高服务器利用效率,降低基础架构成本,更快速地部署、更便捷地管理数据库服务。 根据云监控供应商Datadog的调查报...

YAN_RONG_TECHNOLOGY的博客 643

golang php mysql性能_容器化的MySQL性能如何?

说到部署,Docker将便携性和易用性拉高到一个新水准。MySQL相关的Dockerfile和脚本已经发布很长时间,在开发社区的使用率也稳步增长。这一点也在意料之中。在影响到MySQL性能的每个环节上,用户的典型担忧在于:容器化以后,在这些环节上是否存在显著的性能开销。为此,我们进行了充分的性能测试,下面我会对测试结果的某些细节进行探讨。我们的关注点主要在MySQL实例的IO和网络性能,尤其是对比...

weixin_28687685的博客 97

mysql docker 高性能_Docker容器化的MySQL性能分析

说到部署,Docker将便携性和易用性拉高到一个新水准。MySQL相关的Dockerfile和脚本已经发布很长时间,在开发社区的使用率也稳步增长。这一点也在意料之中。在影响到MySQL性能的每个环节上,用户的典型担忧在于:容器化以后,在这些环节上是否存在显著的性能开销。为此,我们进行了充分的性能测试,下面我会对测试结果的某些细节进行探讨。我们的关注点主要在MySQL实例的IO和网络性能,尤其是对比...

weixin_39797264的博客 293

告别传统部署!容器化 MySQL 生产级方案:Docker 持久化 + K8s 高可用 + 性能调优一步到位

曾几何时,在容器里运行数据库,尤其是像MySQL这样的有状态服务,被许多人视为“离经叛道”的玩具方案。每个Pod实例都有其专用的PVC,即使Pod被重新调度,也会挂载回原来的数据卷。接下来,我们将从Docker到K8s,由浅入深,揭开容器化MySQL的高阶玩法。(如Calico)的网络策略来限制对MySQL服务的访问,实现网络层面的零信任。,并结合监控、日志、网络策略,构建出真正生产级的、高可用的容器化数据库服务。容器化部署MySQL,已经从一种“新奇”的尝试,演进为支撑现代云原生应用的。

IAMIF12的博客 1063

MySQL 是否需要容器化

容器的定义:容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题。认真分析大家的各种观点,发现赞同者仅仅是从容器优势的角度来阐述 MySQL 需要容器化,几乎没有什么业务场景进行验证自己的观点;反过来再看反对者,他们从性能、数据安全等多个因素进行阐述 MySQL不需要容器化,也举证了一些不适合的业务场景。下面,我们就聊一下 Docker 不适合跑 MySQL 的 N 个原因!...

qq_38377190的博客 700

数据库 MySQL 是否需要容器化?

的定义:容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题。认真分析大家的各种观点,发现赞同者仅仅是从容器优势的角度来阐述 MySQL 需要容器化,几乎没有什么业务场景进行验证自己的观点;反过来再看反对者,他们从性能、数据安全等多个因素进行阐述 MySQL不需要容器化,也举证了一些不适合的业务场景。下面,我们就聊一下不要将数据储存在容器中,这也是 Docker 官方容器使用技巧中的一条。容器随时可以停止、或者删除。当容器被rm掉,容器里的数据将会丢失。

Admans的专栏 903
上一篇: Kubernetes DNS Service技术研究
下一篇: 【推荐】SpringBoot整合 Swagger2
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值