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

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.kler.cn/a/534550.html

相关文章:

  • string类OJ练习题
  • uniapp小程序自定义中间凸起样式底部tabbar
  • 信标链的基本概念
  • ubuntu 网络管理--wpa_supplicant、udhcpc
  • 牛客周赛 Round 79
  • 我们来学人工智能 -- 感悟DeepSeek
  • C# 压缩图片并保存到本地
  • Android性能优化系列——卡顿优化
  • 【C++】指针的基础概念与应用解析
  • tkvue 入门,像写html一样写tkinter
  • uniapp小程序自定义中间凸起样式底部tabbar
  • 记录使用libvirt创建虚拟机、自定义qcow2镜像
  • 图像分割中根据mask的ROI,去除mask和image中没有勾画ROI层数以外的图像
  • 数据库技术基础
  • Certum OV企业型通配符SSL
  • 常用工具类——Collections集合框架
  • c++ 基础 计算机的内存和寻址机制
  • Redis面试题总结(题目来源JavaGuide)
  • LeetCode 3442.奇偶频次间的最大差值 I
  • ASP.NET Core筛选器Filter
  • Vue3.5常用特性整理
  • 一、tsp学习笔记——开发环境搭建
  • 计算机网络笔记再战——理解几个经典的协议6——TCP与UDP
  • Mysql-增删改查(知识点总结)
  • WPS的word文档加密
  • module ‘matplotlib.cm‘ has no attribute ‘get_cmap‘