制品库内网速度异常#423
"云原生构建"中pull制品库的镜像, 或者push镜像到制品库的速度慢得异常, 和预期的网速不一致. 一个280MB的镜像push到制品库耗时24s, 按照设计100MB/s的网速预期耗时应在3s左右.
FROM python:3.13-slim ENV LC_ALL C.UTF-8 ENV LANG C.UTF-8 ENV TZ Asia/Shanghai RUN apt-get update RUN apt-get install -y curl && \ curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ apt-get install -y nodejs RUN curl -sSL -O https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb && \ dpkg -i packages-microsoft-prod.deb && \ rm packages-microsoft-prod.deb && \ apt-get update RUN ACCEPT_EULA=Y apt-get install -y unixodbc msodbcsql18 && \ apt-get install -y unixodbc-dev libgssapi-krb5-2 gcc python3-dev nginx supervisor net-tools
No response
你好,上面这个图是我们经过优化后在内网进行测试的结果,上限是 800Mbps带宽(也就是最高100MB/s的速率),由图可知,除了 docker push 外,基本都可以打满带宽,以上测试都是单层一路连接。 为什么docker push 慢,是因为 docker push 需要边压缩边推送,采用的单线程的 gzip 算法和 level6 压缩级别,推送吞吐上不来。后面的 curl \ docker buildx build --push 和 skopeo 都是先压缩后推送,可以将整个带宽打满。你如果感兴趣可以采用 curl 和 skopeo 进行测试,docker buildx build --push 的方式由于有安全问题,不能放开给用户。curl 的流程可以参考 oci_comformance_test,一致性测试工具,链接(https://github.com/opencontainers/distribution-spec/tree/main/conformance)
docker 慢在社区已经是共识,能找到这个issue(https://github.com/moby/moby/issues/41987),社区也已经有了解决方案https://github.com/moby/moby/issues/41987),社区也已经有了解决方案(https://github.com/moby/moby/pull/44008),使用 pigz 代替 gzip,但是尚未合入,我们会持续跟踪这里的进展,直到问题解决再关闭这个 issue。
另外附上外部已有的一个方案,https://blog.csdn.net/zhaoxilengfeng/article/details/145696992,由于社区也会解决这个问题,所以我们不准备自己处理了,请您知悉。
对于您说的280MB的镜像push到制品库耗时24s, 我分析如下:docker push 大概能跑到250Mbps,也就是30MB/s, 280MB 传输大概9.5s,压缩原因导致时间*2,推送过程花费19s,还有1~2s的 manifest 等元数据确认,差别不大。
cc @youkun
描述一下体验不好的点
"云原生构建"中pull制品库的镜像, 或者push镜像到制品库的速度慢得异常, 和预期的网速不一致.
一个280MB的镜像push到制品库耗时24s, 按照设计100MB/s的网速预期耗时应在3s左右.
优化建议?如有
No response