当前位置: 首页 > news >正文

ESXI虚拟机中部署docker会降低服务器性能


在 8 核 16GB 的 ESXi 虚拟机中部署 Docker 的性能影响分析

在 ESXi 虚拟机中运行 Docker 容器时,性能影响主要来自以下几个方面:

  1. 虚拟化开销:ESXi 虚拟化层和 Docker 容器化层的叠加。
  2. 资源竞争:虚拟机与容器之间对 CPU、内存、网络和存储资源的争用。
  3. 调度延迟:ESXi 和 Docker 的双层调度可能增加任务响应时间。

以下是详细分析和优化建议。


1. 性能影响分析

(1) CPU 性能
  • 虚拟化开销
    • ESXi 虚拟化引入约 5%~10% 的 CPU 开销。
    • Docker 容器化引入约 2%~5% 的 CPU 开销。
    • 总开销:约 7%~15%
  • 调度延迟
    • ESXi 和 Docker 的双层调度可能增加任务切换时间,导致延迟波动。
(2) 内存性能
  • 内存开销
    • ESXi 虚拟化占用约 1~2GB 内存(用于 Hypervisor 和管理)。
    • Docker 容器化占用约 100~500MB 内存(用于容器运行时和镜像缓存)。
    • 总开销:约 1.1~2.5GB
  • 内存竞争
    • 若容器内存需求较高,可能触发虚拟机内存交换(Swap),显著降低性能。
(3) 网络性能
  • 虚拟网络开销
    • ESXi 虚拟交换机(vSwitch)引入约 5%~10% 的网络延迟。
    • Docker 容器网络(如 bridge 模式)引入约 2%~5% 的延迟。
    • 总开销:约 7%~15%
  • 带宽限制
    • 虚拟机网络带宽受 ESXi 主机配置限制(如 1G/10G 网卡)。
(4) 存储性能
  • 虚拟存储开销
    • ESXi 虚拟磁盘(VMDK)引入约 5%~10% 的 I/O 延迟。
    • Docker 容器存储(如 OverlayFS)引入约 2%~5% 的延迟。
    • 总开销:约 7%~15%
  • IOPS 限制
    • 虚拟机磁盘 IOPS 受底层存储性能限制(如 SAS RAID 5)。

2. 性能影响量化

(1) 资源占用估算
资源ESXi 开销Docker 开销总开销剩余资源
CPU5%~10%2%~5%7%~15%85%~93%
内存1~2GB100~500MB1.1~2.5GB13.5~14.9GB
网络延迟5%~10%2%~5%7%~15%-
存储延迟5%~10%2%~5%7%~15%-
(2) 并发能力估算
  • SIP 信令处理
    • 单核 vCPU 可处理约 1,000~1,500 TPS
    • 8 核 vCPU 可处理 8,000~12,000 TPS
    • 考虑虚拟化和容器化开销,实际性能约为 6,800~10,200 TPS
  • 并发会话数
    • 每个 SIP 会话平均产生 0.5~1 TPS
    • 可支持 6,800~10,200 并发 SIP 会话

3. 优化建议

(1) CPU 优化
  • 绑定 vCPU:将虚拟机 vCPU 绑定到物理 CPU 核心,减少上下文切换。
    # ESXi 命令行
    vmdumper <VM_ID> setaffinity 0-7
    
  • 限制容器 CPU:为 Docker 容器设置 CPU 配额,避免资源争用。
    docker run --cpus="2" <image>
    
(2) 内存优化
  • 预留内存:为虚拟机预留 16GB 内存,避免内存交换。
    # ESXi 虚拟机设置
    memoryReservationLockedToMax = "TRUE"
    
  • 限制容器内存:为 Docker 容器设置内存限制。
    docker run --memory="4g" <image>
    
(3) 网络优化
  • 使用 Host 网络模式:减少 Docker 容器网络开销。
    docker run --network="host" <image>
    
  • 启用 SR-IOV:若 ESXi 主机支持,为虚拟机分配 SR-IOV 虚拟功能(VF)。
(4) 存储优化
  • 使用本地存储:将 Docker 容器数据存储到虚拟机本地磁盘,避免共享存储延迟。
  • 启用 Overlay2:使用 Overlay2 存储驱动,减少容器存储开销。
    # Docker 配置文件
    {"storage-driver": "overlay2"
    }
    

4. 性能验证

(1) 压力测试工具
  • SIPp:模拟并发 SIP 信令。
    sipp -sn uac <kamailio_ip> -i <client_ip> -d 10000 -m 10000 -r 1000
    
  • 监控指标
    • SIP 事务/秒(TPS):目标 ≥6,800 TPS。
    • 响应延迟(P99):≤5 ms。
(2) 资源监控
  • ESXi 监控
    • 使用 esxtop 查看虚拟机 CPU、内存、网络和磁盘使用率。
  • Docker 监控
    • 使用 docker stats 查看容器资源占用。
    docker stats <container_id>
    

5. 总结

  • 性能影响
    • 在 8 核 16GB 的 ESXi 虚拟机中部署 Docker,总体性能下降约 7%~15%
    • 可支持 6,800~10,200 并发 SIP 会话
  • 优化建议
    • 绑定 vCPU、预留内存、限制容器资源。
    • 使用 Host 网络模式和 Overlay2 存储驱动。
  • 适用场景
    • 中小型 VoIP 系统,适合开发和测试环境。
    • 若需更高性能,建议直接使用物理机部署 Kamailio 和 Docker。

相关文章:

ESXI虚拟机中部署docker会降低服务器性能

在 8 核 16GB 的 ESXi 虚拟机中部署 Docker 的性能影响分析 在 ESXi 虚拟机中运行 Docker 容器时&#xff0c;性能影响主要来自以下几个方面&#xff1a; 虚拟化开销&#xff1a;ESXi 虚拟化层和 Docker 容器化层的叠加。资源竞争&#xff1a;虚拟机与容器之间对 CPU、内存、…...

ASP.NET Core与配置系统的集成

目录 配置系统 默认添加的配置提供者 加载命令行中的配置。 运行环境 读取方法 User Secrets 注意事项 Zack.AnyDBConfigProvider 案例 配置系统 默认添加的配置提供者 加载现有的IConfiguration。加载项目根目录下的appsettings.json。加载项目根目录下的appsettin…...

中间件的概念及基本使用

什么是中间件 中间件是ASP.NET Core的核心组件&#xff0c;MVC框架、响应缓存、身份验证、CORS、Swagger等都是内置中间件。 广义上来讲&#xff1a;Tomcat、WebLogic、Redis、IIS&#xff1b;狭义上来讲&#xff0c;ASP.NET Core中的中间件指ASP.NET Core中的一个组件。中间件…...

SpringBoot 整合 Mybatis:注解版

第一章&#xff1a;注解版 导入配置&#xff1a; <groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version> </dependency> 步骤&#xff1a; 配置数据源见 Druid…...

18.[前端开发]Day18-王者荣耀项目实战(一)

01-06 项目实战 1 代码规范 2 CSS编写顺序 3 组件化开发思想 组件化开发思路 项目整体思路 – 各个击破 07_(掌握)王者荣耀-top-整体布局完成 完整代码 01_page_top1.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8…...

Kafka 使用说明(kafka官方文档中文)

文章来源:kafka -- 南京筱麦软件有限公司 第 1 步:获取 KAFKA 下载最新的 Kafka 版本并提取它: $ tar -xzf kafka_{{scalaVersion}}-{{fullDotVersion}}.tgz $ cd kafka_{{scalaVersion}}-{{fullDotVersion}} 第 2 步:启动 KAFKA 环境 注意:您的本地环境必须安装 Java 8+。…...

基于多智能体强化学习的医疗AI中RAG系统程序架构优化研究

一、引言 1.1 研究背景与意义 在数智化医疗飞速发展的当下,医疗人工智能(AI)已成为提升医疗服务质量、优化医疗流程以及推动医学研究进步的关键力量。医疗 AI 借助机器学习、深度学习等先进技术,能够处理和分析海量的医疗数据,从而辅助医生进行疾病诊断、制定治疗方案以…...

Airflow:深入理解Apache Airflow Task

Apache Airflow是一个开源工作流管理平台&#xff0c;支持以编程方式编写、调度和监控工作流。由于其灵活性、可扩展性和强大的社区支持&#xff0c;它已迅速成为编排复杂数据管道的首选工具。在这篇博文中&#xff0c;我们将深入研究Apache Airflow 中的任务概念&#xff0c;探…...

multisim入门学习设计电路

文章目录 1.软件的安装2.电路基本设计2.1二极管的简介2.2最终的设计效果2.3设计流程介绍 3.如何测试电路 1.软件的安装 我是参考的下面的这个文章&#xff0c;文章的链接放在下面&#xff0c;亲测是有效的&#xff0c;如果是小白的话&#xff0c;可以参考一下&#xff1a; 【…...

【算法精练】二分查找算法总结

目录 前言 1. 二分查找&#xff08;基础版&#xff09; 2. 寻找左右端点 循环判断条件 求中间点 总结 前言 说起二分查找&#xff0c;也是一种十分常见的算法&#xff0c;最常听说的就是&#xff1a;二分查找只能在数组有序的场景下使用&#xff1b;其实也未必&#xff0c;…...

从零开始实现一个双向循环链表:C语言实战

文章目录 1链表的再次介绍2为什么选择双向循环链表&#xff1f;3代码实现&#xff1a;从初始化到销毁1. 定义链表节点2. 初始化链表3. 插入和删除节点4. 链表的其他操作5. 打印链表和判断链表是否为空6. 销毁链表 4测试代码5链表种类介绍6链表与顺序表的区别7存储金字塔L0: 寄存…...

MYSQL面试题总结(题目来源JavaGuide)

MYSQL基础架构 问题1&#xff1a;一条 SQL语句在MySQL中的执行过程 1. 解析阶段 (Parsing) 查询分析&#xff1a;当用户提交一个 SQL 语句时&#xff0c;MySQL 首先会对语句进行解析。这个过程会检查语法是否正确&#xff0c;确保 SQL 语句符合 MySQL 的语法规则。如果发现…...

visual studio安装

一、下载Visual Studio 访问Visual Studio官方网站。下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 在主页上找到并点击“下载 Visual Studio”按钮。 选择适合需求的版本&#xff0c;例如“Visual Studio Community”&#xff08;免费版本&#xff09;&#x…...

JVM执行引擎

一、执行引擎的概述: 执行引擎是]ava虚拟机核心的组成部分之一; “虚拟机”是一个相对于“物理机”的概念&#xff0c;这两种机器都有代码执行能力&#xff0c;其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的&#xff0c;而虚拟机的执行引擎则…...

C# 9.0记录类型:解锁开发效率的魔法密码

一、引言&#xff1a;记录类型的神奇登场 在 C# 的编程世界中&#xff0c;数据结构就像是构建软件大厦的基石&#xff0c;其重要性不言而喻。然而&#xff0c;传统的数据结构定义方式&#xff0c;尤其是在处理简单的数据承载对象时&#xff0c;常常显得繁琐复杂。例如&#xf…...

搭建自己的专属AI——使用Ollama+AnythingLLM+Python实现DeepSeek本地部署

前言 最近DeepSeek模型非常火&#xff0c;其通过对大模型的蒸馏得到的小模型可以较轻松地在个人电脑上运行&#xff0c;这也使得我们有机会在本地构建一个专属于自己的AI&#xff0c;进而把AI“调教”为我们希望的样子。本篇文章中我将介绍如何使用OllamaAnythingLLMPython实现…...

『 C++ 』中理解回调类型在 C++ 中的使用方式。

文章目录 案例 1&#xff1a;图形绘制库中的回调使用场景说明代码实现代码解释 案例 2&#xff1a;网络服务器中的连接和消息处理回调场景说明代码实现代码解释 案例 3&#xff1a;定时器中的回调使用场景说明代码实现代码解释 以下将通过不同场景给出几个使用回调类型的具体案…...

git多人协作

目录 一、项目克隆 二、 1、进入克隆仓库设置 2、协作处理 3、冲突处理 4、多人协作分支的推送拉取删除 1、分支推送&#xff08;2种&#xff09; 2、远程分支拉取&#xff08;2种&#xff09; 3、远程分支删除 一、项目克隆 git clone 画船听雨眠/test1 (自定义的名…...

CTFSHOW-WEB入门-命令执行71-77

题目&#xff1a;web 71 题目&#xff1a;解题思路&#xff1a;分析可知highlight_file() 函数被禁了&#xff0c;先想办法看看根目录&#xff1a;cvar_export(scandir(dirname(‘/’))); 尝试一下发现很惊奇&#xff1a;&#xff08;全是&#xff1f;&#xff09;这种情况我也…...

浅谈《图解HTTP》

感悟 滑至尾页的那一刻&#xff0c;内心突兀的涌来一阵畅快的感觉。如果说从前对互联网只是懵懵懂懂&#xff0c;但此刻却觉得她是如此清晰而可爱的呈现在哪里。 介绍中说&#xff0c;《图解HTTP》适合作为第一本网络协议书。确实&#xff0c;它就像一座桥梁&#xff0c;连接…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...