当前位置: 首页 > 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。
http://www.lryc.cn/news/531613.html

相关文章:

  • ASP.NET Core与配置系统的集成
  • 中间件的概念及基本使用
  • SpringBoot 整合 Mybatis:注解版
  • 18.[前端开发]Day18-王者荣耀项目实战(一)
  • Kafka 使用说明(kafka官方文档中文)
  • 基于多智能体强化学习的医疗AI中RAG系统程序架构优化研究
  • Airflow:深入理解Apache Airflow Task
  • multisim入门学习设计电路
  • 【算法精练】二分查找算法总结
  • 从零开始实现一个双向循环链表:C语言实战
  • MYSQL面试题总结(题目来源JavaGuide)
  • visual studio安装
  • JVM执行引擎
  • C# 9.0记录类型:解锁开发效率的魔法密码
  • 搭建自己的专属AI——使用Ollama+AnythingLLM+Python实现DeepSeek本地部署
  • 『 C++ 』中理解回调类型在 C++ 中的使用方式。
  • git多人协作
  • CTFSHOW-WEB入门-命令执行71-77
  • 浅谈《图解HTTP》
  • LLMs瞬间获得视觉与听觉感知,无需专门训练:Meta的创新——在图像、音频和视频任务上实现最优性能。
  • 自研有限元软件与ANSYS精度对比-Bar3D2Node三维杆单元模型-央视大裤衩实例
  • kubernetes 高可用集群搭建
  • 【C++】STL——vector底层实现
  • 数据结构初探:链表之单链表篇
  • 介绍一下Mybatis的底层原理(包括一二级缓存)
  • Linux基础 ——tmux vim 以及基本的shell语法
  • 64位的谷歌浏览器Chrome/Google Chrome
  • jetson编译torchvision出现 No such file or directory: ‘:/usr/local/cuda/bin/nvcc‘
  • 多线程创建方式三:实现Callable接口
  • Linux下的编辑器 —— vim